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