Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我需要让我的Java程序在输入无效后重新开始_Java_Loops_For Loop_While Loop_Do While - Fatal编程技术网

我需要让我的Java程序在输入无效后重新开始

我需要让我的Java程序在输入无效后重新开始,java,loops,for-loop,while-loop,do-while,Java,Loops,For Loop,While Loop,Do While,我目前正在为学校做作业,我几乎完成了,但我只有一个大问题需要解决,然后才能添加最后一部分 我需要创建一个程序,提示您输入1或2,然后它要求您输入三个单词/名称并将它们保存到数组中 然后,根据您选择的是1还是2,它会按字母顺序打印它们,或者围绕小写和大写字母翻转。我还没有添加该部分,因为我正在尝试修复与第一次输入相关的问题 当您输入1或2以外的数字时,系统会指示我显示错误消息并再次请求输入。我很确定我需要做的是让整个程序回到开头,因为再次复制/粘贴整个程序会很糟糕,哈哈 一个大问题可能是我在使用i

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

我需要创建一个程序,提示您输入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;
}
}
}
import java.util.Scanner;
公共类IsabellaPiantoniLab5{
公共静态void main(字符串[]args){
//征求意见
扫描仪输入=新扫描仪(System.in);
系统输出打印(“请选择数字1或数字2”);
int numChoice=input.nextInt();
//如果选择1或2
如果(numChoice==1 | | numChoice==2){
System.out.println(“请输入三个名称:”);
字符串名称输入[]=新字符串[4];
//输入回路
for(int i=0;i

编辑我误解了这个问题,我以为你想重新启动整个应用程序 在与@csm_dev讨论该方法之后
这是一种方法,可以通过清空字段并显示一条消息“请输入有效输入”和一条澄清消息来再次请求用户输入,而不是将所有代码都放在
main()
,尝试将功能位分解到它们自己的方法中。这将使(重新)更容易这样调用代码。您需要类似于
while(userInput!=1 | | 2){userInput=askForUserInput()}
。您编写了“if(numChoice!=1 | | numChoice!=2)”但这总是正确的。numChoice不是一个…也不是两个。仅仅因为用户输入了错误就退出并手动重新启动整个应用程序是处理这种情况的糟糕方法。因此,您可以采取第二种方法第二种方法不会退出应用程序?不需要重新启动?当您调用
System.exit()时
您正在关闭程序,这也是一个糟糕的解决方案。此外,请不要在代码中使用“智能引号”。它将运行应用程序的另一个实例并终止此实例。问题仍然存在:您为什么要这样做而不是简单地使用循环?
System.exit(0); 
RunTime.getRuntime().exec(“Your app”);
System.exit(0);