Hjälp i java kod, hittar inte felet.

Permalänk
Medlem

Hjälp i java kod, hittar inte felet.

Hej hej, jag har skrivit ett program som finns i min övningsbok på programmering java B.
Jag har fixat alla fel jag kan hitta utom ett som jag får nerslag på när jag kompilerar.

jag får detta fel men jag kan inte se att något är fel.

C:\uppg23.java:34: cannot find symbol
symbol : method print()
location: class resultat
deltagare[i].print();
^
1 error

Tool completed with exit code 1

Här är programmet:

Obs! klassen "resultat" finns längst ner, så att du inte kopierar in allt.

public class uppg23 { public static void main(String[] args) { resultat[] deltagare = new resultat[30]; int antal = 0; boolean fortsatt = true; do{ System.out.println("1. Mata in nya t„vlare"); System.out.println("2. S”k t„vlare och l„s tid"); System.out.println("3. S”k t„vlare och „ndra tid"); System.out.println("4. S”k t„vlare och „ndra namn"); System.out.println("5. Skriv ut t„vlare med given tid"); System.out.println("6. Skriv ut hela listan"); System.out.println("7. Avsluta."); System.out.println("Ge ditt val: "); char val = Keyboard.readChar(); switch (val) { case '1': System.out.print("Namn: "); String namn = Keyboard.readString(); System.out.println("tid: "); String tid = Keyboard.readString(); deltagare[antal++] = new resultat(namn, tid); break; case '2': System.out.print("Namn: "); String temp = Keyboard.readString(); boolean hittad = false; for (int i = 0; i < antal && !hittad; i++){ if (deltagare[i].hämtaNamn().equals(temp)){ deltagare[i].print(); hittad = true; } } if (!hittad){ System.out.println("Namnet finns inte."); } break; case '3': System.out.println("Namn: "); temp = Keyboard.readString(); hittad = false; for(int i = 0; i < antal && !hittad; i++){ if (deltagare[i].hämtaNamn().equals(temp)){ System.out.println("Ny tid: "); String t = Keyboard.readString(); deltagare[i] .sättTid(t); hittad = true; } } if (!hittad){ System.out.println("Namnet finns inte."); } break; case '4': System.out.println("Namn: "); temp = Keyboard.readString(); hittad = false; for (int i = 0; i < antal && !hittad; i++){ if (deltagare[i].hämtaNamn().equals(temp)){ System.out.println("Nytt namn: "); String n = Keyboard.readString(); deltagare[i] .sättNamn (n); hittad = true; } } if (!hittad){ System.out.println("Namnet finns inte."); } break; case '5': System.out.println("Tid: "); temp = Keyboard.readString(); for (int i; i < antal; i++){ String t = deltagare[i].hämtaTid(); if (t.equals(temp)){ t = deltagare[i].hämtaNamn(); } } break; case '6': for (int i = 0; i < antal; i++){ System.out.println(deltagare[i]); } break; case '7': fortsatt = false; break; default: System.out.println("Felinmatning"); } }while (fortsatt); } }

och här är klassen "resultat":

public class resultat { private String namn; private String tid; public resultat(String n, String t){ namn = n; tid = t; } public void sättNamn(String n){ namn = n; } public void sättTid(String t){ tid = t; } public String hämtaNamn(){ return namn; } public String hämtaTid(){ return tid; } public String toString(){ return (namn + "\t" + tid); } }

Permalänk
Medlem

Du har ju inte funktionen print() i klassen resultat ..

Visa signatur

Intel Core i7-3770K | NVIDIA Geforce GTX 980 | 16 GB DDR3 | DELL P2415Q | DELL U2711 | DELL U2410

Permalänk
Medlem

Ah det var det jag misstänkte men det står inget sånt i boken, är inte den sissta metoden med toString utskriftsmetoden?

Permalänk
Medlem

Ett tips är att använda code-taggarna när du klistrar in kod, då blir det mycket enklare att läsa ( [.code] [./code] fast utan punkter)
I vilket fall försöker du göra deltagare[i].print(); på ett ställe i koden (under case 2 typ), men det går såklart inte eftersom du i din resultatklass inte har en metod som heter print(). Om du läser felmeddelandet ser du att den klagar på just det:
"C:\uppg23.java:34: cannot find symbol" - Den hittar inte en symbol på rad 34.
"symbol : method print()" - Symbolen som den inte hittar är metoden print()
"deltagare[i].print();" - Såhär ser det felaktiga ut.

Edit: Haha så slö man är, två inlägg varav ett från trådskaparen under tiden jag skrev mitt

Permalänk
Medlem

Den sista metoden, toString(), skapar bara en sträng. Du får skriva
System.out.println(resultat[i]). Då kommer den strängen som skapas i toString() att skrivas ut på skärmen. Om du verkligen vill använda resultat[i].print() för att skriva ut så får du lägga till
[CODE]
public void print() {
System.out.println(namn + "\t" + tid);
}
i resultat-klassen.

Visa signatur

Real Programmers always confuse Christmas and Halloween because OCT 31 == DEC 25 !

Permalänk

En helt annan sak klassnamn SKA börja på stor bokstav, det heter alltså Resultat inte resultat.

Visa signatur

RTFM - vacker sak att säga till folk som ställer dumma frågor