我如何制作扫描仪,以便始终能够输入命令

问题描述 投票:0回答:1

我正在制作一个电影存储程序,当我输入第一个命令但它不能让我再输入任何命令时,它工作得很好。

我认为这与字符串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");
      }

 } 



  }

我不太擅长编程,但是我不能得到任何帮助

java java.util.scanner
1个回答
0
投票

您可以为此使用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秒钟,对此我没有真正看到目的。如果在后台进行了大量计算或排序,而用户看不到,则“正在加载”通知才有意义。您还忘记了最后一种情况下的中断。这意味着,如果您选择纪录片,它也将陷入默认情况。

© www.soinside.com 2019 - 2024. All rights reserved.