while 循环增加额外的时间
while loop incrementing an extra time
下面的 while 循环运行额外的时间。我正在尝试执行一个用户输入,该输入接受来自用户的 10 个有效数字并打印它们的总和。但是,while 循环执行了额外的时间并请求第 11 个输入。
import java.util.Scanner;
class userInput{
public static void main(String[] args) {
int i = 1, sum = 0;
Scanner sc = new Scanner(System.in);
while(i <= 10){
i++;
System.out.println("Enter number " + "#" +i);
boolean isValidNumber = sc.hasNextInt();
if(isValidNumber){
int userChoiceNumber = sc.nextInt();
sum += userChoiceNumber;
}else{
System.out.println("Invalid Input");
}
}
System.out.println("The sum of your entered numbers are = " + sum);
}
}
除了那些很棒的评论之外,您可能应该只在获得有效输入时增加“i”:
while(i <= 10) {
System.out.print("Enter number " + "#" +i + ": ");
boolean isValidNumber = sc.hasNextInt();
if(isValidNumber){
int userChoiceNumber = sc.nextInt();
sum += userChoiceNumber;
i++;
}else{
System.out.println("Invalid Input");
sc.next();
}
}
请注意,当您输入错误时,您需要使用“sc.next()”将其删除。
首先 - 确保格式正确。
(我缩进了你的循环,将你的输出移到了主 class 中,修复了一些卷曲的 brackets/loop 结尾)。
public static void main(String[] args) {
int i = 1, sum = 0;
Scanner sc = new Scanner(System.in);
while(i <= 10){
i++;
System.out.println("Enter number " + "#" +i);
boolean isValidNumber = sc.hasNextInt();
if(isValidNumber){
int userChoiceNumber = sc.nextInt();
sum += userChoiceNumber;
}
else{
System.out.println("Invalid Input");
}
}
System.out.println("The sum of your entered numbers are = " + sum);
}
好的 - 所以 运行 代码,我发现询问的次数是正确的,但是输入提示显示错误的数字,第一个输入提示从 2 开始,最后一个11 日
原因是 i++
在请求输入之前运行,因此在输出之前它会累加。
这可以通过将 i++
移动到 else 子句的正下方来轻松解决 - 如下所示:
else{
System.out.println("Invalid Input");
}
i++
}
这里的主要问题是您在 while 循环开始时增加了变量。如果这就是你要找的东西,那很好,但是如果你想在它达到 10 时停止循环,你需要像 while(i < 10)
那样,如果 i++
在循环的末尾循环,然后你可以做 while(i <= 10)
例如:
i = 0;
while(i < 10){
i++;
//code here
}
这将使使用 i 的代码使用 1 到 10 之间的值。使用 <= 将使用 1 到 11 之间的值。
另一个例子:
i = 0;
while(i < 10){
//code here
i++;
}
这将使使用 i 的代码使用 0 到 9 之间的值。使用 <= 将使用 0 到 10 之间的值。
人们执行增量循环的另一种方法是执行 for
循环而不是 while
循环
这看起来像:
for(int i = 0; i < 10; i++){
//code here
}
这还允许您创建一个仅在循环内的变量,因此您可以在 for 循环内创建它,而不是在方法的开头或循环之前创建它。如果在别处使用变量,这就不好了。
下面的 while 循环运行额外的时间。我正在尝试执行一个用户输入,该输入接受来自用户的 10 个有效数字并打印它们的总和。但是,while 循环执行了额外的时间并请求第 11 个输入。
import java.util.Scanner;
class userInput{
public static void main(String[] args) {
int i = 1, sum = 0;
Scanner sc = new Scanner(System.in);
while(i <= 10){
i++;
System.out.println("Enter number " + "#" +i);
boolean isValidNumber = sc.hasNextInt();
if(isValidNumber){
int userChoiceNumber = sc.nextInt();
sum += userChoiceNumber;
}else{
System.out.println("Invalid Input");
}
}
System.out.println("The sum of your entered numbers are = " + sum);
} }
除了那些很棒的评论之外,您可能应该只在获得有效输入时增加“i”:
while(i <= 10) {
System.out.print("Enter number " + "#" +i + ": ");
boolean isValidNumber = sc.hasNextInt();
if(isValidNumber){
int userChoiceNumber = sc.nextInt();
sum += userChoiceNumber;
i++;
}else{
System.out.println("Invalid Input");
sc.next();
}
}
请注意,当您输入错误时,您需要使用“sc.next()”将其删除。
首先 - 确保格式正确。 (我缩进了你的循环,将你的输出移到了主 class 中,修复了一些卷曲的 brackets/loop 结尾)。
public static void main(String[] args) {
int i = 1, sum = 0;
Scanner sc = new Scanner(System.in);
while(i <= 10){
i++;
System.out.println("Enter number " + "#" +i);
boolean isValidNumber = sc.hasNextInt();
if(isValidNumber){
int userChoiceNumber = sc.nextInt();
sum += userChoiceNumber;
}
else{
System.out.println("Invalid Input");
}
}
System.out.println("The sum of your entered numbers are = " + sum);
}
好的 - 所以 运行 代码,我发现询问的次数是正确的,但是输入提示显示错误的数字,第一个输入提示从 2 开始,最后一个11 日
原因是 i++
在请求输入之前运行,因此在输出之前它会累加。
这可以通过将 i++
移动到 else 子句的正下方来轻松解决 - 如下所示:
else{
System.out.println("Invalid Input");
}
i++
}
这里的主要问题是您在 while 循环开始时增加了变量。如果这就是你要找的东西,那很好,但是如果你想在它达到 10 时停止循环,你需要像 while(i < 10)
那样,如果 i++
在循环的末尾循环,然后你可以做 while(i <= 10)
例如:
i = 0;
while(i < 10){
i++;
//code here
}
这将使使用 i 的代码使用 1 到 10 之间的值。使用 <= 将使用 1 到 11 之间的值。
另一个例子:
i = 0;
while(i < 10){
//code here
i++;
}
这将使使用 i 的代码使用 0 到 9 之间的值。使用 <= 将使用 0 到 10 之间的值。
人们执行增量循环的另一种方法是执行 for
循环而不是 while
循环
这看起来像:
for(int i = 0; i < 10; i++){
//code here
}
这还允许您创建一个仅在循环内的变量,因此您可以在 for 循环内创建它,而不是在方法的开头或循环之前创建它。如果在别处使用变量,这就不好了。