• 1
  • 2
2020-02-18, 09:18
  #1
Medlem
Jag borde adda meddelanden till en lista, givet att de inte är längre är 100 tecken.
Här är metoden:

public void add(Message message) {
int length = message.length();
if (length < 100) {
this.list.add(message);
}
}

Varför gnäller det (cannot find symbol) över length() här? Är det för att 'message' är av typ 'Message' och inte 'String'? Metoden public void add(Message message) får dock inte ändras.
Jag lyckas adda alla meddelanden till listan men inte sortera ut de som är över 100 tecken.
Citera
2020-02-18, 10:13
  #2
Medlem
kodsnickrarns avatar
Vad är Message för klass/interface?
Har den en length()-metod?
Citera
2020-02-18, 10:13
  #3
Medlem
Det gnäller förmodligen för att length inte är en metod i klassen Message. Kan vi få se hur Message är implementerad? Lättare att komma med feedback då.
Citera
2020-02-18, 10:29
  #4
Medlem
Jag lyckades till slut. Klassen Message hade en metod getContent så jag använde den för att "hämta" messagen och då gick att att ta reda på längden.

if(message.getContent().length() <= 100)
Citera
2020-02-18, 10:33
  #5
Medlem
Citat:
Ursprungligen postat av kodsnickrarn
Vad är Message för klass/interface?
Har den en length()-metod?

Length är ju inbyggt i arraylist så det behövs ingen särkild metod för det?
Citera
2020-02-18, 11:36
  #6
Moderator
Protons avatar
Citat:
Ursprungligen postat av KarlXVII
Length är ju inbyggt i arraylist så det behövs ingen särkild metod för det?
Vad Message är för interface eller klass kan vi bara spekulera i som sagt.

En sak är säker iaf och det är att den inte innehåller en lenght-metod alldeles uppenbart.

Exakt vad ArrayList har med saken att göra är även det ett mysterium, misstänker att det är en tankevurpa av TS.
Citera
2020-02-18, 11:52
  #7
Medlem
kodsnickrarns avatar
Citat:
Ursprungligen postat av KarlXVII
Length är ju inbyggt i arraylist så det behövs ingen särkild metod för det?

Jamen nu refererade du ju till en length-metod på _Message_ klassen - INTE på listan!
Citera
2020-02-18, 12:29
  #8
Medlem
Citat:
Ursprungligen postat av kodsnickrarn
Jamen nu refererade du ju till en length-metod på _Message_ klassen - INTE på listan!

Message-klassen är en annan klass i sammanhanget som inte innehåller någon length-metod. Däremot har den getContent(). Koden jag klippte in var alltså från en annan klass (Messageservice), och jag antog att det framgick att saker och ting addades i en list där. Den klassen har ArrayList-verktygen importerade och då funkar även length. My bad, jag borde ha visat och förklarat lite mera.
Citera
2020-02-18, 13:38
  #9
Medlem
Citat:
Ursprungligen postat av KarlXVII
Message-klassen är en annan klass i sammanhanget som inte innehåller någon length-metod. Däremot har den getContent(). Koden jag klippte in var alltså från en annan klass (Messageservice), och jag antog att det framgick att saker och ting addades i en list där. Den klassen har ArrayList-verktygen importerade och då funkar även length. My bad, jag borde ha visat och förklarat lite mera.
Sorry, men det känns inte riktigt som du riktigt har koll på vad du gör. Är det inte så att getContent() returnerar en String som du sedan kollar längden på? D v s att innehållet i ett meddelande lagras som en String? Och att sedan objekten av klassen Message lagras i en ArrayList (om nu meddelandets innehåll har en längd under 100)? Får för mig att du blandar ihop metoder length() från String med den från ArrayList....
Citera
2020-02-19, 14:08
  #10
Medlem
Citat:
Ursprungligen postat av DieTrolle
Sorry, men det känns inte riktigt som du riktigt har koll på vad du gör. Är det inte så att getContent() returnerar en String som du sedan kollar längden på? D v s att innehållet i ett meddelande lagras som en String? Och att sedan objekten av klassen Message lagras i en ArrayList (om nu meddelandets innehåll har en längd under 100)? Får för mig att du blandar ihop metoder length() från String med den från ArrayList....

Du har helt rätt, jag är en nybörjarklåpare. Men nu har jag ett annat dilemma. Jag har lite grejer i en arraylist som jag borde printa ut var för sig på egen rad. Jag lyckas göra det men det blir fel ändå då inte får vara radbrytning efter sista utskriva "item". Det ser ut ungefär såhär:

På listan M hittades inga items.

På listan M hittades 1 item:
A


På listan M hittades 2 items:
A
B


På listan M hittades 3 items:
A
B
C


På listan M hittades 4 items:
A
B
C
D


Obs. Det krävs tre olika utskrivningar: för inga, 1 item och fler items.

String letter = "";
for (int i = 0; i < items.size(); i++) {
letter = letter + items.get(i) + "\n";


Allt detta ligger inom toString som returnerar texterna plus letters. Mellan fallet 'inga' och '1 item' finns ingen extra radbrytning och så ska det vara mellan de andra också. Om jag tar bort "\n" så hamnar de på sama rad, typ ABC. Vad göra?

Var snäll med mig nu!
Citera
2020-02-19, 14:21
  #11
Moderator
Protons avatar
Citat:
Ursprungligen postat av KarlXVII
Du har helt rätt, jag är en nybörjarklåpare. Men nu har jag ett annat dilemma. Jag har lite grejer i en arraylist som jag borde printa ut var för sig på egen rad. Jag lyckas göra det men det blir fel ändå då inte får vara radbrytning efter sista utskriva "item". Det ser ut ungefär såhär:

På listan M hittades inga items.

På listan M hittades 1 item:
A


På listan M hittades 2 items:
A
B


På listan M hittades 3 items:
A
B
C


På listan M hittades 4 items:
A
B
C
D


Obs. Det krävs tre olika utskrivningar: för inga, 1 item och fler items.

String letter = "";
for (int i = 0; i < items.size(); i++) {
letter = letter + items.get(i) + "\n";


Allt detta ligger inom toString som returnerar texterna plus letters. Mellan fallet 'inga' och '1 item' finns ingen extra radbrytning och så ska det vara mellan de andra också. Om jag tar bort "\n" så hamnar de på sama rad, typ ABC. Vad göra?

Var snäll med mig nu!
Vet inte riktigt om jag missförstår vad du vill åstadkomma nu, men jag misstänker att du vill veta hur din toString ska se ut för att den ska funka med godtyckliga antal element mellan 0-n?

Vad sägs om följande?
Kod:
public String toString(){
return 
String.join("\n",items.toArray());


Mer läsning:

https://www.geeksforgeeks.org/java-s...join-examples/

Observera att en String i java implementerar interfacet CharSequence.
Citera
2020-02-19, 14:40
  #12
Medlem
Citat:
Ursprungligen postat av Proton
Vet inte riktigt om jag missförstår vad du vill åstadkomma nu, men jag misstänker att du vill veta hur din toString ska se ut för att den ska funka med godtyckliga antal element mellan 0-n?

Vad sägs om följande?
Kod:
public String toString(){
return 
String.join("\n",items.toArray());


Mer läsning:

https://www.geeksforgeeks.org/java-s...join-examples/

Observera att en String i java implementerar interfacet CharSequence.

Tack, jag ska kika på detta! Utskriften i sig är annars helt "korrekt" men det är en radbrytning där även efter den sista utskrivna bokstaven som inte ska vara där. Koden (letter = letter + items.get(i) + "\n" lägger ju till en efter varje item. Min toString ska funka så att den skriver ut innehållet i tabellen nedanför varandra alla på egen rad. Det läggs nya items i tabellen och så skrivs innehållet ut.
__________________
Senast redigerad av KarlXVII 2020-02-19 kl. 14:44.
Citera
  • 1
  • 2

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in