Java 问题中的 While 循环
While Loops in Java Problems
现在我们正在学习 while 循环 - 这是挑战。 “该程序应反复提示用户输入一个数字。保留 运行 用户输入的数字总数,并记录用户输入的次数。每当用户输入某些内容时,该程序应停止那不是整数。当用户完成后,打印用户输入的条目数及其总和。“
“与此程序的示例交互可能如下所示:
程序:输入一个整数以继续或输入一个非整数值以完成。然后按 return.
用户:2
程序:输入一个整数以继续或输入一个非整数值以完成。然后按 return.
用户:6
程序:输入一个整数以继续或输入一个非整数值以完成。然后按 return.
用户:89
程序:输入一个整数以继续或输入一个非整数值以完成。然后按 return.
用户:q
程序:您输入了 3 个整数。您的条目总和为 97。"
这是我目前所拥有的。
import java.util.Scanner;
public class InputSequence
{
public static void main (String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println ("Enter an integer to continue or a non-integer value to finish. Then press return.");
int sum = 0;
int total = 0;
while (scan.hasNextInt())
{
scan.next();
System.out.println ("Enter an integer to continue or a non-integer value to finish. Then press return.");
int input = scan.nextInt();
sum = input + input;
total = total + 1;
}
System.out.println ("You entered " + total + " integers. The sum of your entries is " + sum);
}
}
我只是有点困惑,因为我的交互似乎在 while 循环中每 2 次跳过 system.out.println,然后不将第一个输入计入总数。我相信总和也并不总是正确计算。此外,如果我输入大量整数然后输入非整数来结束程序,我将收到错误消息而不是结束消息。但是,假设我输入两个整数,然后输入一个字符串,我将得到结束消息。
您的问题在于 scan.next()
中的用法,可以将其删除并且应该正确显示 System.out.println
。
.next()
方法是 nextInt()
的泛型方法,其中 returns 是 String
。
您可以做的另一件事是从 while
循环切换到 do while
以防止您重复此行两次:
System.out.println ("Enter an integer to continue or a non-integer value to finish. Then press return.");
一个例子是:
Scanner scan = new Scanner(System.in);
int sum = 0;
int total = 0;
do {
System.out.println ("Enter an integer to continue or a non-integer value to finish. Then press return.");
int input = scan.nextInt();
sum = sum + input;
total = total + 1;
} while (scan.hasNextInt());
System.out.println ("You entered " + total + " integers. The sum of your entries is " + sum);
}
现在我们正在学习 while 循环 - 这是挑战。 “该程序应反复提示用户输入一个数字。保留 运行 用户输入的数字总数,并记录用户输入的次数。每当用户输入某些内容时,该程序应停止那不是整数。当用户完成后,打印用户输入的条目数及其总和。“
“与此程序的示例交互可能如下所示: 程序:输入一个整数以继续或输入一个非整数值以完成。然后按 return.
用户:2
程序:输入一个整数以继续或输入一个非整数值以完成。然后按 return.
用户:6
程序:输入一个整数以继续或输入一个非整数值以完成。然后按 return.
用户:89
程序:输入一个整数以继续或输入一个非整数值以完成。然后按 return.
用户:q
程序:您输入了 3 个整数。您的条目总和为 97。"
这是我目前所拥有的。
import java.util.Scanner;
public class InputSequence
{
public static void main (String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println ("Enter an integer to continue or a non-integer value to finish. Then press return.");
int sum = 0;
int total = 0;
while (scan.hasNextInt())
{
scan.next();
System.out.println ("Enter an integer to continue or a non-integer value to finish. Then press return.");
int input = scan.nextInt();
sum = input + input;
total = total + 1;
}
System.out.println ("You entered " + total + " integers. The sum of your entries is " + sum);
}
}
我只是有点困惑,因为我的交互似乎在 while 循环中每 2 次跳过 system.out.println,然后不将第一个输入计入总数。我相信总和也并不总是正确计算。此外,如果我输入大量整数然后输入非整数来结束程序,我将收到错误消息而不是结束消息。但是,假设我输入两个整数,然后输入一个字符串,我将得到结束消息。
您的问题在于 scan.next()
中的用法,可以将其删除并且应该正确显示 System.out.println
。
.next()
方法是 nextInt()
的泛型方法,其中 returns 是 String
。
您可以做的另一件事是从 while
循环切换到 do while
以防止您重复此行两次:
System.out.println ("Enter an integer to continue or a non-integer value to finish. Then press return.");
一个例子是:
Scanner scan = new Scanner(System.in);
int sum = 0;
int total = 0;
do {
System.out.println ("Enter an integer to continue or a non-integer value to finish. Then press return.");
int input = scan.nextInt();
sum = sum + input;
total = total + 1;
} while (scan.hasNextInt());
System.out.println ("You entered " + total + " integers. The sum of your entries is " + sum);
}