Permalänk

While loop

Finns det någon vänlig själ som vill hjälpa mig med att hitta felet i min while-sats?
Jag har suttit för länge och hittar inte felet, förhoppningsvis så kan någon pigg och fräsch individ hitta det.

public class Main { public static void main(String[] args) throws IOException { Scanner sc = new Scanner(System.in); boolean notquit = true; Apple aaa = new Apple(); Orange ooo = new Orange(); Pear ppp = new Pear(); while(notquit) { String functionChoice = sc.next(); System.out.println("What do you want to do? Print sales, waste, thrown, sold or quit"); if(functionChoice.equalsIgnoreCase("sales")) { TotalSales one = new TotalSales(); } else if(functionChoice.equalsIgnoreCase("waste")) { TotalWaste uno = new TotalWaste(); } else if(functionChoice.equalsIgnoreCase("total")) { System.out.println("You selected sold, which one? Print apple, pear or orange."); } if(functionChoice.equalsIgnoreCase("apple")) { aaa.importTotal("C:\\Users\\mtrum\\OneDrive\\Skrivbord\\text\\Soldapple.txt\\"); } else if(functionChoice.equalsIgnoreCase("orange")) { ooo.importTotal("C:\\Users\\mtrum\\OneDrive\\Skrivbord\\text\\Soldorange.txt\\"); } else if(functionChoice.equalsIgnoreCase("pear")) { ppp.importTotal("C:\\Users\\mtrum\\OneDrive\\Skrivbord\\text\\soldpear.txt\\"); } else if(functionChoice.equalsIgnoreCase("thrown")) { System.out.println("Which fruit?"); } if(functionChoice.equalsIgnoreCase("apple")) { aaa.importTotal("C:\\Users\\mtrum\\OneDrive\\Skrivbord\\text\\thrownapple.txt\\"); } else if(functionChoice.equalsIgnoreCase("orange")) { ooo.importTotal("C:\\Users\\mtrum\\OneDrive\\Skrivbord\\text\\thrownorange.txt\\"); } else if(functionChoice.equalsIgnoreCase("pear")) { ppp.importTotal("C:\\Users\\mtrum\\OneDrive\\Skrivbord\\text\\thrownpear.txt\\"); }else if(functionChoice.equalsIgnoreCase("quit")) { notquit = false; } } } }

Mvh

Permalänk
Medlem

Du skriver inte vad som inte fungerar. Vid ett första ögonkast verkar inte följdfrågorna för kastad frukt ligga i bodyn för den frågan

Visa signatur

| Ryzen 5800x | Asus prime x470 pro | Asus rtx 3080 tuf oc | Gskill 32gb 3,6ghz | Dell S2721DGFA | Asus MG279Q |

Permalänk
Skrivet av Ragin Pig:

Du skriver inte vad som inte fungerar. Vid ett första ögonkast verkar inte följdfrågorna för kastad frukt ligga i bodyn för den frågan

Instämmer på detta. Plus, måste du inte också fånga ett nytt user-input efter frågan "System.out.println("Which fruit?");" ?

Permalänk

@Ragin Pig:
Borde jag inte ändå iallafall "komma" in i loopen? Nu händer inget alls.
Tack på förhand

Permalänk
Medlem

@trumanshow: Menar du att du inte får någon utskrift alls när du kör programmet? Du läser in en sträng från användaren innan du gör någon utskrift, så du måste skriva in något för att det ska hända något.

Du borde för övrigt lära dig hur debuggern fungerar i din utvecklingsmiljö, det skulle spara dig mycket tid när du får såna här problem eftersom du då kan stega igenom rad för rad och se vad som händer.

Permalänk
Medlem
Skrivet av trumanshow:

@Ragin Pig:
Borde jag inte ändå iallafall "komma" in i loopen? Nu händer inget alls.
Tack på förhand

Jo, det borde du och gör det antagligen. Prova att byta plats på dom här raderna så att frågan ställs innan du läser input

String functionChoice = sc.next(); System.out.println("What do you want to do? Print sales, waste, thrown, sold or quit");

Visa signatur

| Ryzen 5800x | Asus prime x470 pro | Asus rtx 3080 tuf oc | Gskill 32gb 3,6ghz | Dell S2721DGFA | Asus MG279Q |

Permalänk

Kodar inte java om dagarna och bara av att kolla på koden så känns det som om du använder din scanner lite felaktigt?
Testa att använda dig utan sc.nextLine samt ändra ordningen.

Du kan läsa vad next & vad nextLine gör för något i dokumentationen https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html

System.out.println("What do you want to do? Print sales, waste, thrown, sold or quit"); String functionChoice = sc.nextLine();

Glöm inte att lägga in någon

else { System.out.println("Could not parse function") }

ifall inget matchar?

Men håller med om att du borde kika hur en debugger fungerar, det är något som du flitigt kommer använda dig av senare.

Länk till dokumentation för scanner
Permalänk
Medlem

Nu har inte jag programmerat på bra länge, så ta det jag säger med en stor hink med salt.

Men jag skulle vilja ha

while(notquit == true) {

Om du har problem med att komma in i loopen.

Visa signatur

Köpa ny TV? https://www.rtings.com/tv/tools/table
Klicka på hide images och sortera på mixed usage (bästa betyg)

Permalänk
Medlem

@yaxez:

while(notquit) är som att skriva while(notquit == true)

du kan göra precis samma sak med

while(!notquit) som då blir lika med while(notquit == false)

Permalänk
Medlem

@yaxez: Det skulle inte göra någon skillnad, notquit och notquit == true är båda booleska uttryck som ger samma värde i det här fallet. Problemet verkat som sagt inte handla om att man inte kommer in i loopen, utan vad som händer inne i loopen.

Sen känns det lite bakvänt att ha notquit istället för bara quit och vända på villkoren, men det har ju inget med problemet att göra.

Permalänk

Tack för alla tips. Nu fungerar loopen som den ska!
Så här ser den färdiga ut.

while(notquit) { System.out.println("What do you want to do? Print sales, waste, thrown, sold or quit"); if(functionChoice.equalsIgnoreCase("sales")) { TotalSales one = new TotalSales(); } else if(functionChoice.equalsIgnoreCase("waste")) { TotalWaste uno = new TotalWaste(); } else if(functionChoice.equalsIgnoreCase("sold")) { System.out.println("You selected sold, which one? Print apple, pear or orange."); String insideChoice = sc.next(); if(insideChoice.equalsIgnoreCase("apple")) { a.importTotal("C:\\Users\\mtrum\\OneDrive\\Skrivbord\\text\\Soldapple.txt\\"); } else if(insideChoice.equalsIgnoreCase("orange")) { o.importTotal("C:\\Users\\mtrum\\OneDrive\\Skrivbord\\text\\Soldorange.txt\\"); } else if(insideChoice.equalsIgnoreCase("pear")) { p.importTotal("C:\\Users\\mtrum\\OneDrive\\Skrivbord\\text\\soldpear.txt\\"); } } else if(functionChoice.equalsIgnoreCase("thrown")) { System.out.println("Which fruit?"); String thownChoiche = sc.next(); if(thownChoiche.equalsIgnoreCase("apple")) { a.importTotal("C:\\Users\\mtrum\\OneDrive\\Skrivbord\\text\\thrownapple.txt\\"); } else if(thownChoiche.equalsIgnoreCase("orange")) { o.importTotal("C:\\Users\\mtrum\\OneDrive\\Skrivbord\\text\\thrownorange.txt\\"); } else if(thownChoiche.equalsIgnoreCase("pear")) { p.importTotal("C:\\Users\\mtrum\\OneDrive\\Skrivbord\\text\\thrownpear.txt\\"); } } else if(functionChoice.equalsIgnoreCase("quit")) { notquit = false; } } } }