【问题标题】:I need to get my Java program to start back at the beginning after an invalid input在输入无效后,我需要让我的 Java 程序从头开始
【发布时间】:2017-12-14 21:16:40
【问题描述】:

我目前正在为学校完成一项作业,我几乎完成了,但我只有一个大问题需要解决,然后才能添加最后一点。

我需要创建一个程序,提示您输入 1 或 2,然后它要求您输入三个单词/名称并将它们保存到一个数组中。

然后,根据您选择的是 1 还是 2,它会按字母顺序打印它们或翻转小写和大写字母。我还没有添加那部分,因为我正在尝试解决与第一个输入相关的问题。

当您输入 1 或 2 以外的数字时,系统会指示我显示错误消息并再次要求输入。我很确定我需要做的是让整个程序回到开头,因为再次复制/粘贴整个程序会很糟糕,哈哈

一个大问题可能是我使用 if/else 语句和 for 循环,而我可能需要将整个事情放在一个循环中?但是我不确定如果我将整个代码放入其中,我将使用什么条件来启动循环。我一定在这里遗漏了什么。

根据我现在的情况,即使您输入 1 或 2,它也会卡住说无效输入。

import java.util.Scanner;

public class IsabellaPiantoniLab5 {
   public static void main (String[]args) {

       //Ask for input
       Scanner input = new Scanner(System.in);
       System.out.print("Please choose either a number 1 or number 2.");
       int numChoice = input.nextInt();

       //if choice is 1 or 2
       if (numChoice == 1 || numChoice == 2) {

           System.out.println("Please enter three names: ");
           String nameInput[] = new String[4];

           //input loop
           for (int i= 0; i < nameInput.length; i++) {

           nameInput[i] = input.nextLine();
       }

       System.out.println("Values are:");

       //display values if 1
       if (numChoice == 1) {
           for (int i=1; i<4; i++) {
               System.out.println(nameInput[i]);
           }
       }
       //display values if 2
       else if (numChoice == 2) {
            for (int i=1; i<4; i++) {
                System.out.println(nameInput[i]);
             }
       }
}

//retry if invalid------i restart from the beginning if this happens
else if (numChoice != 1 || numChoice != 2) {

  System.out.println("Invalid value. Please try again.");
  //continue;
}
}
}

【问题讨论】:

  • 不要将所有代码放在main() 中,而是尝试将功能位分解为它们自己的方法。以这种方式(重新)调用代码会更容易。
  • 你需要像while (userInput != 1 || 2) { userInput = askForUserInput() }这样的东西。
  • 您写了“if (numChoice != 1 || numChoice != 2)”,但这始终是正确的。 numChoice 不是一个……或者不是两个。

标签: java loops for-loop while-loop do-while


【解决方案1】:
System.exit(0); 

这将终止应用程序,因此您可以使用命令行( START [your app path])再次启动它

或者

RunTime.getRuntime().exec(“Your app”);
System.exit(0);

编辑我误解了这个问题,我以为你想重新启动整个应用程序 在与@csm_dev 讨论该方法后 这是一种通过清空字段并显示“请输入有效输入”消息和澄清消息来再次要求用户输入的方法

【讨论】:

  • 仅仅因为用户输入错误而退出并手动重启整个应用程序是一种糟糕的处理方式。
  • 因此可以采取第二种方法
  • 第二种方法不会退出应用程序?不需要重启?当您致电System.exit() 时,您正在关闭程序,这又是一个糟糕的解决方案。另外,请不要在代码中使用“智能引号”。
  • 它将运行应用程序的另一个实例并终止这个
  • 问题仍然存在:为什么要这样做而不是简单地使用循环?
猜你喜欢
  • 2021-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多