2017-10-30 1 views
0

Ich mache ein Einkaufsprogramm in Java. Ich möchte in der Lage sein, eine andere Art von Lebensmittelgeschäft zu betreten, aber wenn ich ein anderes eingeben, schließt das Programm, wie kann ich das beheben? Auch wie kann ich am Ende des Programms eine Reihe der gleichen zufälligen Arten von Lebensmitteln machen?Wie kann ich eine neue Art von Lebensmittelgeschäft eingeben, ohne dass das Programm schließt?

import java.util.Random; 
import java.util.Scanner; 
// REMEMBER YOUR UPPER/LOWER CASES! 

public class ShoppingGame { 

public static void main (String [] args) { 
    boolean done = false; 
    System.out.println("Welcome to the Grocery shopping game! Enter a type of grocery: fruits, vegetables, grains" + 
      " or junk foods."); 
    //String [] groceries = {"fruits", "vegetables", "wheat and grains"}; 
    String[] fruits = {"apples", "oranges", "bananas", "grapes"}; 
    String[] vegetables = {"broccoli", "green beans", "carrots", "cabbage"}; 
    String[] grains = {"spaghetti", "rice", "mac and cheese", "whole wheat bread"}; 
    String[] junkFoods = {"ice cream", "chips", "cookies", "cakes and pies"}; 

    Random generator = new Random(); 
    Scanner scanner = new Scanner(System.in); 
    String userInput = scanner.nextLine(); 

    while (!done) { 

     if (userInput.equalsIgnoreCase("fruits")) { 
      int randomFruit = generator.nextInt(fruits.length); 
      System.out.println(fruits[randomFruit]); 
      System.out.println("Enter another one!"); 
      scanner.nextLine(); 
      done = false; 
     } 
     if (userInput.equalsIgnoreCase("vegetables")) { 
      int randomVegetable = generator.nextInt(fruits.length); 
      System.out.println(vegetables[randomVegetable]); 
      System.out.println("Enter another one!"); 
      scanner.nextLine(); 
     } 
     if (userInput.equalsIgnoreCase("grains")) { 
      int randomGrains = generator.nextInt(fruits.length); 
      System.out.println(grains[randomGrains]); 
      System.out.println("Enter another one!"); 
      scanner.nextLine(); 
     } 
     if (userInput.equalsIgnoreCase("junk foods")) { 
      int randomJunkFood = generator.nextInt(fruits.length); 
      System.out.println(junkFoods[randomJunkFood]); 
      System.out.println("Enter another one!"); 
      scanner.nextLine(); 
     } 
     if (userInput.equalsIgnoreCase("quit")) { 
      done = true; 
      scanner.close(); 
     } 
     else{ 
      System.out.println("Try again!"); 
     } 
    } 
} 

}

+0

'userInput = scanner.nextLine()'? –

+0

Warum schließen Sie den Scanner? – shmosel

+0

Stellen Sie sicher, dass Sie den userInput = scanner.next() aufrufen. in der While-Schleife, um kontinuierlich von der Eingabeaufforderung zu lesen. – royalGhost

Antwort

0

Vielleicht String userinput = scanner.nextline() aufrufen; Innerhalb der Weile, also müssen Sie es nicht mit jeder if-Anweisung aufrufen. Und benutze weiter; mit jeder if-Anweisung, um die Schleife neu zu starten.

Eine weitere Sache, die Ihre if-else Aussageformation falsch ist. Vielleicht legen Sie alle verschachtelten ifs in eine if-Anweisung und dann verwenden Sie sonst

Verwandte Themen