Tack för svaren, blev lite klokare och tog inspiration. Har lagt till lite för att se vart felet uppstår och med koden just nu så är det bara vid "case 0" det sker, alltså när jag ska lägga till en hund genom att anropa en metod längre ner.
Kod:
public class Dagis {
public static void main(String args[]) {
Hund[] hundDagis = new Hund[20]; //Array som innehåller objekt av Hund classen.
boolean exit = false;
Scanner input = new Scanner(System.in);
do {
try {
System.out.println("\n");
System.out.println("Välj något alternativ");
System.out.println("-------------------------");
System.out.println("0 - Lägg till en hund");
System.out.println("1 - Uppdatera en hunds tid");
System.out.println("2 - Ta bort en hund");
System.out.println("3 - Visa alla hundar");
System.out.println("4 - Sök efter en hund");
System.out.println("5 - Beräkna pris");
System.out.println("6 - Sök efter hundras");
System.out.println("7 - Sök efter en hund baserat på hund id");
System.out.println("8 - Visa totalt antal timmar för alla hundar");
System.out.println("9 - Avsluta");
int menuVal = input.nextInt(); //Något knas här
switch(menuVal) {
case 0: //lägg till hund metod
Hund nyHund = new Hund(); //*** DET HÄR CASET GER ERROR
nyHund = adderaHund();
hundDagis[0] = nyHund; //Det här overwritar [0] hela tiden?
break;
case 1: //uppdatera hund tid metod
System.out.println("Not implemented");
break;
case 2: //ta bort hund
System.out.println("Not implemented");
break;
case 3: //visa alla hundar
int a = 0;
for(int i = 0; i < hundDagis.length; i++) { //Det här kollar om det finns hundar inne på dagiset
if(hundDagis[i] == null) { //En loop adderar till inten a om det finns ett null värde på varje plats i arrayen
a++; //finns det ett null värde stiger int a med 1
}
}
if(a==20) { //Når int a värdet 20 betyder det att det är tomt på dagiset(arrayen)
System.out.println("Inga hundar finns just nu!");
}
else {
for(Hund hund: hundDagis) {
if(hund != null) {
System.out.println("HundId: "+hund.hundId+"\n"+"Hundnamn: "+hund.hundNamn);
}
}
}
break;
case 4: //sök hund metod
System.out.println("Not implemented");
break;
case 5: // pris metod
System.out.println("Not implemented");
break;
case 6: //sök hundras metod
System.out.println("Not implemented");
break;
case 7: //sök hund med hundid metod
System.out.println("Not implemented");
break;
case 8: // totalt antal timmar metod
System.out.println("Not implemented");
break;
case 9: // exit(); avlsuta program
exit=true;
System.out.println("Programmet har avlsutats");
break;
}
}
catch(InputMismatchException ex) {
System.out.println("Försök igen, en siffra krävs!");
}
//input.nextLine();
}while(!exit);
input.close();
}
public static Hund adderaHund() {
Hund nyhund = new Hund();
Scanner input1 = new Scanner(System.in);
System.out.print("Skriv in hundid: ");
nyhund.hundId = input1.nextLine();
System.out.print("Skriv in namn på hunden: ");
nyhund.hundNamn = input1.nextLine();
System.out.print("\n"+"Hunden är tillagd!");
input1.close(); //Stäng scannern
return nyhund;
}
}
Alla cases förutom case 0 går tillbaka till menyn utan error. En körning ser ut så här.(T.ex : skriver in 1. och sedan 0 för att fylla i hund uppgifter)
Välj något alternativ
-------------------------
0 - Lägg till en hund
1 - Uppdatera en hunds tid
2 - Ta bort en hund
3 - Visa alla hundar
4 - Sök efter en hund
5 - Beräkna pris
6 - Sök efter hundras
7 - Sök efter en hund baserat på hund id
8 - Visa totalt antal timmar för alla hundar
9 - Avsluta
1
Not implemented
Välj något alternativ
-------------------------
0 - Lägg till en hund
1 - Uppdatera en hunds tid
2 - Ta bort en hund
3 - Visa alla hundar
4 - Sök efter en hund
5 - Beräkna pris
6 - Sök efter hundras
7 - Sök efter en hund baserat på hund id
8 - Visa totalt antal timmar för alla hundar
9 - Avsluta
0
Skriv in hundid: 1
Skriv in namn på hunden: Pelle
Hunden är tillagd!Exception in thread "main"
Välj något alternativ
-------------------------
0 - Lägg till en hund
1 - Uppdatera en hunds tid
2 - Ta bort en hund
3 - Visa alla hundar
4 - Sök efter en hund
5 - Beräkna pris
6 - Sök efter hundras
7 - Sök efter en hund baserat på hund id
8 - Visa totalt antal timmar för alla hundar
9 - Avsluta
java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at Dagis.main(Dagis.java:26)
Kan det ha något att göra med att i metoden adderaHund som anropas vid case 0 så kommer en till Scanner in i bilden? Och när den hoppar tillbaka till toppen av do{ så blir det knas? Det känns som att det är placeringen av scannern och Close() som har något med saken att göra, men provar typ alla ställen och ännu inte fått till något som funkar
Man ser ju att den kör menyn igen efter att case 0 avslutats, men att det ballar ur vid rad 26 där
Kod:
int menuVal = input.nextInt(); //Något knas här
är. Case 3 skriver ut "Inga hundar finns ..." precis som den ska(eftersom att det inte finns några hundar) och returnerar till menyn utan konstigheter.
Även catch exception fungerar och returnerar menyn när man inte matar in en siffra.