Java 在for循环中循环else语句?

Java 在for循环中循环else语句?,java,Java,在此脚本中,用户必须输入5个由新行分隔的数字。其目的是检查输入是否为整数,如果不是,则理论上应循环,要求用户输入有效的整数 第一部分工作-如果用户输入的值不是整数,则抛出错误并要求他们输入有效整数。但是如果他们再次输入一个无效的整数,它会抛出一个异常,我不希望它这样做。我希望它循环else语句,直到输入为整数 我尝试在else语句中嵌入一个while循环,但它开始变得混乱,我不知道如何使用它。任何帮助都将不胜感激 import java.util.*; import java.util.con

在此脚本中,用户必须输入5个由新行分隔的数字。其目的是检查输入是否为整数,如果不是,则理论上应循环,要求用户输入有效的整数

第一部分工作-如果用户输入的值不是整数,则抛出错误并要求他们输入有效整数。但是如果他们再次输入一个无效的整数,它会抛出一个异常,我不希望它这样做。我希望它循环else语句,直到输入为整数

我尝试在else语句中嵌入一个while循环,但它开始变得混乱,我不知道如何使用它。任何帮助都将不胜感激

import java.util.*; 
import java.util.concurrent.TimeUnit;
public class NumbersArray
{
    int[] numbers = new int[5]; // Defines new array string with length of 5 characters
    Scanner sc = new Scanner(System.in);
    int length = numbers.length; // Defines length int, calculates how many in numbers int

    public void inputToNumbers()
    {
        for(int i=0; i<length; i++) // Declares i as 0, while i less than length loop runs. Increments each time
        {
            System.out.println("Input five whole numbers, separated by new lines:" + " (" + (i+1) + "/5)");
            String inputtedNums; // Declares inputtedNums string
            inputtedNums = sc.nextLine(); // Inserts input
            if (inputtedNums.matches("[0-9]+")) // Checks if the input is numbers only
            {
                numbers[i] = Integer.parseInt(inputtedNums); // Parses string input into integer numbers
            }
            else
            {
                System.out.println("Error! You inputted an invalid number, try again." + " (" + (i+1) + "/5)");
                inputtedNums = sc.nextLine(); // Takes user input
                numbers[i] = Integer.parseInt(inputtedNums); // Parses string input into integer numberS        
            }
        }
    }

    public void printTheNumbers()
    {
        for(int x=0; x<length; x++)
        {
            System.out.println(numbers[x]);
        }
    }

    public static void main(String[] args)
    {
        NumbersArray na = new NumbersArray();
        na.inputToNumbers();
        na.printTheNumbers();
    }
}
import java.util.*;
导入java.util.concurrent.TimeUnit;
公务舱号排列
{
int[]numbers=new int[5];//定义长度为5个字符的新数组字符串
扫描仪sc=新的扫描仪(System.in);
int length=numbers.length;//定义长度int,计算整数的个数
公共无效输入成员()
{

对于@Bentaye提供的(int i=0;i),我在else语句中添加了以下内容:

        else
        {
            while(!inputtedNums.matches("[0-9]+"))
            {
                System.out.println("Error! You inputted an invalid number, try again." + " (" + (i+1) + "/5)");
                inputtedNums = sc.nextLine(); // Takes user input
            }
            numbers[i] = Integer.parseInt(inputtedNums); // Parses string input into integer numberS        
        }

这非常有效。

感谢@Bentaye,我在else声明中添加了以下内容:

        else
        {
            while(!inputtedNums.matches("[0-9]+"))
            {
                System.out.println("Error! You inputted an invalid number, try again." + " (" + (i+1) + "/5)");
                inputtedNums = sc.nextLine(); // Takes user input
            }
            numbers[i] = Integer.parseInt(inputtedNums); // Parses string input into integer numberS        
        }

这非常有效。

要扩展我的评论,您可以通过以下方式简化代码:

创建另一个方法,仅从控制台输入读取一个数字,然后可以再次调用该方法,直到得到一个实际数字。这将用递归代替循环

public void inputToNumbers()
{
    int[] numbers = new int[5];
    for(int i=0; i<numbers.length; i++) {
        System.out.println("Input five whole numbers, separated by new lines:" + " (" + (i+1) + "/5)");
        numbers[i] = readNextnumber();
    }
}

private int readNextnumber() {
    Scanner sc = new Scanner(System.in);
    String inputtedNum = sc.nextLine();
    if(!inputtedNum.matches("[0-9]+")) {
        System.out.println("Error! You inputted an invalid number, try again.");
        return readNextnumber();
    } else {
        return Integer.parseInt(inputtedNum);
    }
}
public void inputToNumbers()
{
int[]数字=新的int[5];

对于(int i=0;i要扩展我的注释,可以通过以下方式简化代码:

创建另一个方法,仅从控制台输入读取一个数字,然后可以再次调用该方法,直到得到一个实际数字。这将用递归代替循环

public void inputToNumbers()
{
    int[] numbers = new int[5];
    for(int i=0; i<numbers.length; i++) {
        System.out.println("Input five whole numbers, separated by new lines:" + " (" + (i+1) + "/5)");
        numbers[i] = readNextnumber();
    }
}

private int readNextnumber() {
    Scanner sc = new Scanner(System.in);
    String inputtedNum = sc.nextLine();
    if(!inputtedNum.matches("[0-9]+")) {
        System.out.println("Error! You inputted an invalid number, try again.");
        return readNextnumber();
    } else {
        return Integer.parseInt(inputtedNum);
    }
}
public void inputToNumbers()
{
int[]数字=新的int[5];

对于(inti=0;i我认为这将很好地工作

public void inputToNumbers()
    {
        for(int i=0; i<length; i++) // Declares i as 0, while i less than length loop runs. Increments each time
        {
            System.out.println("Input five whole numbers, separated by new lines:" + " (" + (i+1) + "/5)");
            String inputtedNums; // Declares inputtedNums string
            inputtedNums = sc.nextLine(); // Inserts input
            while (inputtedNums.matches("^-?[^\\d]+$")) // Checks if the input is not number 
            {
                System.out.println("Error! You inputted an invalid number, try again." + " (" + (i+1) + "/5)");
                inputtedNums = sc.nextLine();

            }
            numbers[i] = Integer.parseInt(inputtedNums);
            // Parses string input into integer numbers
        }
    }
public void inputToNumbers()
{

对于(inti=0;i我认为这将很好地工作

public void inputToNumbers()
    {
        for(int i=0; i<length; i++) // Declares i as 0, while i less than length loop runs. Increments each time
        {
            System.out.println("Input five whole numbers, separated by new lines:" + " (" + (i+1) + "/5)");
            String inputtedNums; // Declares inputtedNums string
            inputtedNums = sc.nextLine(); // Inserts input
            while (inputtedNums.matches("^-?[^\\d]+$")) // Checks if the input is not number 
            {
                System.out.println("Error! You inputted an invalid number, try again." + " (" + (i+1) + "/5)");
                inputtedNums = sc.nextLine();

            }
            numbers[i] = Integer.parseInt(inputtedNums);
            // Parses string input into integer numbers
        }
    }
public void inputToNumbers()
{

for(int i=0;iI)希望它循环else语句,直到输入为整数。这是不可能的,在逻辑上也没有任何意义。创建一个方法来获取输入。在获得有效输入之前不要从该方法返回。该方法中的无限循环,仅以有效输入结束(例如)。在else中,您需要将代码放入while循环。即,当输入不是有效整数时,请保留asking@Bentaye谢谢你,它工作得很好!@josef你还可以在一个返回int的方法中考虑输入读取位,并在该方法中加入循环,以使代码更易于阅读。@Bentaye我不确定你所说的int是什么意思is?你能给我一个例子吗?我希望它循环else语句,直到输入为整数。这是不可能的,在逻辑上也没有任何意义。创建一个方法来获取输入。在获得有效输入之前不要从该方法返回。该方法中的无限循环,仅以有效输入结束(例如)。在else中,您需要将代码放入while循环。即,当输入不是有效整数时,请保留asking@Bentaye谢谢你,它工作得很好!@josef你还可以在一个返回int的方法中考虑输入读取位,并在该方法中加入循环,以使代码更易于阅读。@Bentaye我不确定你所说的int是什么意思是吗?你能给我举个例子吗?