我正在制作一个电影存储程序,当我输入第一个命令但它不能让我再输入任何命令时,它工作得很好。
我认为这与字符串ChooseGenre = scan.next()有关,但是如果我删除它,由于它不包含扫描程序变量,我的switch语句将不起作用。
我想要它,以便我可以输入一个命令,然后能够输入另一个命令。例如:我输入“动作”,它会给我一个动作电影的列表,但随后输入“恐怖”,输出将是恐怖电影的列表。
这是我的代码
import java.util.Scanner;
import java.util.concurrent.TimeUnit;
import java.util.ArrayList;
public class oiug {
static Scanner scan = new Scanner(System.in);
public static void main(String[] args) throws InterruptedException{
// Start of the program
ArrayList<String> Genre = new ArrayList<String>();
Genre.add("Action");
Genre.add("Horror");
System.out.println("Welcome to the movie store Please type the genre of movie you would like to"
+ " browse");
Genre.forEach(System.out::println);
// ArrayList for the action movies
ArrayList<String> Action = new ArrayList<String>();
Action.add("Die Hard");
Action.add("Top Gun");
Action.add("Whitehouse Down");
Action.add("The Gentlemen");
Action.add("Mission impossible");
Action.add("John Wick");
Action.add("Atomic Blonde");
Action.add("Inception");
Action.add("The Matrix");
Action.add("Speed");
// ArrayList for the Horror movies
ArrayList<String> Horror = new ArrayList<String>();
Horror.add("Us");
Horror.add("It Chapter 2");
Horror.add("Get Out");
Horror.add("The Interior");
Horror.add("It follows");
Horror.add("The Ring");
Horror.add("The Shinning");
Horror.add("Scream");
Horror.add("Alien");
Horror.add("Nightmare on Elm Street");
ArrayList<String> Documentary = new ArrayList<String>();
Documentary.add("Free Solo");
Documentary.add("13th");
Documentary.add("Fyre");
Documentary.add("Honeyland");
Documentary.add("Strong Island");
Documentary.add("Abducted in plain sight");
Documentary.add("Man on Wire");
Documentary.add("How to Survive a Plague");
String ChooseGenre=scan.next();
System.out.println("Loading.");
TimeUnit.SECONDS.sleep(1);
System.out.println("Loading..");
TimeUnit.SECONDS.sleep(1);
System.out.println("Loading...");
TimeUnit.SECONDS.sleep(1);
// If the input doesn't match one of the options a "please try again messege appears"
switch(ChooseGenre) {
case "Horror" :
System.out.println("you chose: Horror!");
Horror.forEach(System.out::println);
break;
case "Action" :
System.out.println("you chose: Action!");
Action.forEach(System.out::println);
break;
case "Documentary" :
System.out.println("you chose: Documentary!");
Documentary.forEach(System.out::println);
default :
System.out.println("Please enter a Movie genre");
}
}
}
我不太擅长编程,但是我不能得到任何帮助
您可以为此使用while循环。
Boolean isProgramRunning = true;
String chooseGenre;
while (isProgramRunning) {
chooseGenre = scan.next();
switch(chooseGenre) {
case "Horror" :
System.out.println("you chose: Horror!");
Horror.forEach(System.out::println);
break;
case "Action" :
System.out.println("you chose: Action!");
Action.forEach(System.out::println);
break;
case "Documentary" :
System.out.println("you chose: Documentary!");
Documentary.forEach(System.out::println);
break;
case "Exit":
isProgramRunning = false;
break;
default :
System.out.println("Please enter a Movie genre");
}
}
我想添加几件事:我建议创建一个Genre类,该类具有genreName的String和ArrayList的属性。这样,您就可以清楚地知道自己拥有多少个流派,并且可以更清楚地看到列表与各个流派有关。您还将阻止用户交互3秒钟,对此我没有真正看到目的。如果在后台进行了大量计算或排序,而用户看不到,则“正在加载”通知才有意义。您还忘记了最后一种情况下的中断。这意味着,如果您选择纪录片,它也将陷入默认情况。