Permalänk
Medlem

switch case problem

Hej jag har en liten kod som ska vara något menysystem och har därför använt mej av Switch case, men jag har problem:
När jag väljer case ett (1) så vill jag att programmet skall skriva "Namn: " så får man skriva in det och sen när det är skrivet så ska den be om "Tid: ", men det står bara:
Namn:
Tid:
utan att jag får skriva något och trycker jag på andra case så händer antingen ingenting eller så går den till default direkt.

här är programmet:

public class uppg23 { public static void main(String[] args) { resultat[] deltagare = new resultat[30]; int antal = 0; boolean fortsatt = true; do{ System.out.println(""); 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(""); System.out.println("Ge ditt val: "); char val = Keyboard.readChar(); switch (val) { case '1': System.out.println("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 = 0; 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"); System.out.println(""); } }while (fortsatt); } }

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); } public void print() { System.out.println(namn + "\t" + tid); } }

Jag testade att plocka ut delar ur programmet för att ta reda på vad som är fel och kom fram till att det var switch case när samma resultat kom med denna enkla lilla kod.

public class Test { public static void main (String[] args){ char nummer = Keyboard.readChar(); switch (nummer) { case '1': System.out.println("Namn: "); String namn = Keyboard.readString(); System.out.println("tid: "); String tid = Keyboard.readString(); break; } } }

Har ni någon aning om vad som är fel?