Avatar billede juliemusen Nybegynder
12. oktober 2011 - 15:01 Der er 31 kommentarer og
1 løsning

tostring

Hejsa.

Hvordan ville i programmere dette spørgsmål:

Opret en klasse Track, der repræsenterer et musikstykke;
klassen Track er specificeret i UML-diagrammet til højre.
De fire feltvariabler skal initialiseres i en konstruktør (via
fire parametre af passende type). Metoden toString skal
returnere en streng-repræsentation for et musikstykke, f.eks.

"Yesterday: The Beatles (2:05)"

Mvh Julie
Avatar billede juliemusen Nybegynder
12. oktober 2011 - 15:02 #1
iøvrgt ser UML diagrammet således ud:

Track
______________
String artist
String songName
int min
int sec
______________
String toString()
Avatar billede arne_v Ekspert
12. oktober 2011 - 15:25 #2
4 private fields
1 constructor med 4 arguementer
1 toString metode

og saa ville jeg som minimum ogsaa lave 4 getter.
Avatar billede juliemusen Nybegynder
12. oktober 2011 - 15:32 #3
Hejsa Arne

Tak for dit svar. Jeg er egentligt mere nysgerrig over hvordan man koder det, altså dvs se eksemplet på det. Dit svar hjælper mig desværre ikke videre lige nu nemlig.

Mvh Julie
Avatar billede arne_v Ekspert
12. oktober 2011 - 15:55 #4
Hm.

Hvor meget Java kan du?
Avatar billede arne_v Ekspert
12. oktober 2011 - 15:57 #5
Jeg kan give dig et eksempel paa en data klasse:

public class Data {
    private int iv;
    private String sv;
    public Data() {
        this(0, "");
    }
    public Data(int iv, String sv) {
        this.iv = iv;
        this.sv = sv;
    }
    public int getIv() {
        return iv;
    }
    public void setIv(int iv) {
        this.iv = iv;
    }
    public String getSv() {
        return sv;
    }
    public void setSv(String sv) {
        this.sv = sv;
    }
    public String toString() {
        return (iv + ":" + sv);
    }
}
Avatar billede arne_v Ekspert
12. oktober 2011 - 15:58 #6
Du har saa 4 felter i.s.f. 2, formatet i toString skal vaere lidt anderledes og du kan formentligt undlade setterne.
Avatar billede juliemusen Nybegynder
12. oktober 2011 - 16:20 #7
Hvad med:


public class Track
{
    private String artist, songName;
    private int min, sec;

 
//Constructor:

    public Track(String artist, String songName, int min, int sec)
    {
        this.artist = artist;
        this.songName = songName;
        this.min = min;
        this.sec = sec;
    }

//Method
   
public String toString()
    {
    return (artist + ", " + songName + ", " + min + ", " + sec);
    }
}
Avatar billede juliemusen Nybegynder
12. oktober 2011 - 16:24 #8
Der står til sidst i spørgsmålet:

Metoden toString skal
returnere en streng-repræsentation for et musikstykke, f.eks.

"Yesterday: The Beatles (2:05)"

Hvordan får jeg sat det ind?

er det noget med:

system.out.println("Yesterday: The Beatles (2:05)") eller er jeg helt forkert på den?

I så fald ikke, hvor skal det stå henne?
Avatar billede juliemusen Nybegynder
12. oktober 2011 - 16:33 #9
hov jeg havde ikke set dine svar. Jeg er nybegynder, men har stor mod på at lære :-) Hvad siger du til mit eksempel?
Avatar billede arne_v Ekspert
12. oktober 2011 - 16:34 #10
return (artist + ", " + songName + ", " + min + ", " + sec);

skal rettes til dt rigtige format
Avatar billede arne_v Ekspert
12. oktober 2011 - 16:36 #11
proev:

return String.format("%s: %s (%d:%02d)", songName, artist, min, sec);
Avatar billede juliemusen Nybegynder
12. oktober 2011 - 16:40 #12
ok tak.

Hvordan fik jeg lavet :

Metoden toString skal returnere en streng-repræsentation for et musikstykke, f.eks.

"Yesterday: The Beatles (2:05)"
Avatar billede arne_v Ekspert
12. oktober 2011 - 16:53 #13
proev den String.format
Avatar billede juliemusen Nybegynder
12. oktober 2011 - 16:55 #14
Jeg har lavet dette indtil videre, og det bliver compilet fint, så det burde egentligt virke.


/**
* Write a description of class Track here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Track
{
    // instance variables - replace the example below with your own
    private String artist, songName;
    private int min, sec;

    /**
    * Constructor for objects of class Track
    */
    public Track(String artist, String songName, int min, int sec)
    {
        this.artist = artist;
        this.songName = songName;
        this.min = min;
        this.sec = sec;
    }

    /**
    * An example of a method - replace this comment with your own
    *
    * @param  y  a sample parameter for a method
    * @return    the sum of x and y
    */
    public String toString()
    {
        // put your code here
        return (artist + ", " + songName + ", " + min + ", " + sec);
    }
   
    public String getartist()
        {
            return artist;
        }
   
    public String getsongName()
        {
            return songName;
        }

    public int getmin()
        {
            return min;
        }
       
    public int getsec()
    {
        return sec;
    }
    }



Kan jeg ikke bruge det? og Hvor skal jeg sætte

"Yesterday: The Beatles (2:05)" og hvordan?
Avatar billede juliemusen Nybegynder
12. oktober 2011 - 17:01 #15
Avatar billede arne_v Ekspert
12. oktober 2011 - 17:14 #16
proev med den String.format jeg angav i din toString
Avatar billede arne_v Ekspert
12. oktober 2011 - 17:15 #17
laeser du datalogi?
Avatar billede juliemusen Nybegynder
12. oktober 2011 - 17:25 #18
vi har bare ikke lært noget om string.format.

Dvs istedet for at skrive:

public String getartist()
        {
            return artist;
        }
   
    public String getsongName()
        {
            return songName;
        }

    public int getmin()
        {
            return min;
        }
       
    public int getsec()
        {
        return sec;
        }

så kan jeg skrive:

return String.format("%s: %s (%d:%02d)", songName, artist, min, sec);

Jeg ved ikke engang hvad % tegnene betyder.. Jeg ved bare at alle de ikke har gjort det med string.format.
Avatar billede juliemusen Nybegynder
12. oktober 2011 - 17:30 #19
hov det var ikke meningen jeg ville ligge et svar.

hhmm jeg sidder og tænker på, er det det der menes. Det er blueJ jeg bruger som program, og der kan man jo højre klikke på klassen "Track", og derefter får man boksen til venstre op, hvor man kan taste ind:

"Yesterday: The Beatles (2:05)"

men der kommer en fejl nederst.



Iøvrigt nej jeg læser ikke datalogi :-) Det er bare eksempler vi bruger.
Avatar billede juliemusen Nybegynder
12. oktober 2011 - 17:31 #20
Avatar billede arne_v Ekspert
12. oktober 2011 - 17:34 #21
Nej - du skal beholde dine getters.

Det er bare:

public String toString() {
    return String.format("%s: %s (%d:%02d)", songName, artist, min, sec);
}
Avatar billede arne_v Ekspert
12. oktober 2011 - 17:36 #22
Hvis du ikke vil bruge String.format kan du lave:

public String toString() {
    return (songName + ": " + artist + " (" + min + ":" + sec + ")");
}

der mangler dog at faa sat et leading nul ind hvis sec er under 10!!

En lille finesse som du saa skal have enlavet en loesning til.
Avatar billede arne_v Ekspert
12. oktober 2011 - 17:37 #23
fejlen ligner et manglende semikolon
Avatar billede juliemusen Nybegynder
12. oktober 2011 - 19:18 #24
Hejsa Arne.

Jeg har lige prøvet med dit:

public String toString() {
    return String.format("%s: %s (%d:%02d)", songName, artist, min, sec);
}


men det virker desværre heller ikke.

http://imageshack.us/f/411/nytbillede2.png/
Avatar billede arne_v Ekspert
12. oktober 2011 - 19:38 #25
der mangler et semikolon eller komma et sted
Avatar billede juliemusen Nybegynder
12. oktober 2011 - 20:29 #26
Sådan så var den der:


Der manglede bare "" når man skriver bogstaver, ved tal skal der ikke været nogle "".

http://imageshack.us/f/522/nytbillede3.png/

Resultatet kommer til at se sådan ud:

http://imageshack.us/f/838/nytbillede4.png/

- dog ved jeg ikke hvorfor den kun skriver "5", og ikke "05"

Koden ser således ud:



/**
* Write a description of class Track here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Track
{
    private String artist, songName;
    private int min, sec;

    public Track(String artist, String songName, int min, int sec)
    {
        this.artist = artist;
        this.songName = songName;
        this.min = min;
        this.sec = sec;
    }

      public String toString()
    {
        return (artist + ": " + songName + "( " + min + ": " +  sec + ") ");
    }
   
}

Mange tak for hjælpen Arne, ligger du ikke et svar :-)
Avatar billede arne_v Ekspert
12. oktober 2011 - 20:33 #27
svar
Avatar billede arne_v Ekspert
12. oktober 2011 - 20:33 #28
5 vs 05 var den lille finesse jeg omtalte i #22.
Avatar billede arne_v Ekspert
12. oktober 2011 - 20:35 #29
String.format skulle goere det rigtigt - med den kode du har valgt skal du goere noget for at faa det 0 foran.

Men jeg kan give et hint.

Proev og udskriv sec/10 og sec%10 og se om det giver en ide!
Avatar billede madseksperten Nybegynder
12. oktober 2011 - 21:08 #30
aahhh hhaa, ok.

Er det noget med jeg skal skrive
{
  return null;
}

et sted eller?
Avatar billede juliemusen Nybegynder
12. oktober 2011 - 21:09 #31
hov lige fra min kærestes profil.

nej null har jo ikke noget med det at gøre.
Avatar billede arne_v Ekspert
12. oktober 2011 - 21:16 #32
nej ikke spor
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester