我正在尝试编写一个简单的程序,它将使用Scanner进行输入并输出最低数字、最高数字以及它们的平均值。但我不希望数字低于0或大于100。我有输出最小值、最大值和平均值的程序,它会告诉我是否输入了小于0或大于100的数字,但它仍然将其视为for循环中的“旋转”。我基本上希望程序返回到上一个数字,而不是在输入错误数字时继续在for循环中前进。有什么建议吗?谢谢!
import java.text.DecimalFormat;
import java.util.Scanner;
public class ExamGrades {
public static void main(String[]args){
Scanner scan = new Scanner(System.in );
int number = 0;
double total = 0;
int minimum;
int maximum = 0;
System.out.println("Please enter the first integer: ");
number = scan.nextInt();
minimum=number;
total += number;
for(int i = 2; i<11; i++){
if(number<0 || number >100){
System.out.println("Please enter a valid number: ");
number = scan.nextInt();
}
else{
System.out.println("Please enter integer " + i + ":");
number = scan.nextInt();
total += number;
if(number<minimum)
minimum = number;
if(number>maximum)
maximum = number;
}
}
DecimalFormat oneDecimalPlace = new DecimalFormat("##.#");
System.out.println("The minimum is: " + minimum);
System.out.println("The maximum is: " + maximum);
System.out.println("The average is: " + oneDecimalPlace.format((total) / 10.0 ));
}
}
您可以将< code>if语句改为< code>while循环。
for(int i = 2; i < 11; i++){
System.out.println("Please enter integer " + i + ":");
number = scan.nextInt();
while(number < 0 || number > 100){ // Wait for valid input
System.out.println("Please enter a valid number: ");
number = scan.nextInt();
}
total += number;
if(number < minimum) minimum = number;
if(number > maximum) maximum = number;
}
这样,在有有效输入之前,您不会在<code>for循环
考虑使用while()
而不是for()
:
int i = 1;
while(i <= 10){
if(number < 0 || number > 10) {
// Code goes here
} else {
// More code goes here
i++; // Notice that i only increments here
}
}
其他选项是do… while()
循环,这可以帮助您避免重复代码:
int i = 1;
do {
if(i == 1)
System.out.print("\nEnter first number:\t");
else
System.out.print("\nEnter next number: \t");
number = scan.nextInt();
if(number < 0 || number > 10) {
// Code goes here
} else {
// More code goes here
i++; // Again, i only increments here
}
} while(i < 10);
您可以从for循环内部递减循环计数器(变量i);这可能不是最佳实践,但它将完成工作。
或者,您可以使用while循环(例如while (i
我正在遍历一个LinkedHashMap并递增I counter,下面是我使用for循环的方式
问题内容: 我对JMeter还是很陌生,我试图 使用循环控制器和JSR223 PostProcessor 来增加用户定义变量中预定义的计数器变量,但它似乎运行不佳。我查看了有关 JMeter循环的各种示例和计数器示例,以解决此问题,但配置元素Counter也未随循环增加。有人可以让我知道我做错了吗? 这就是我尝试使用后处理器递增计数器的方式,并且日志显示计数器未针对每个循环递增。我想将计数器提高到
此方法重复读取命令并执行它们,直到游戏结束。完成的变量为true时,表示玩家/用户点击了退出并想要结束游戏——从而退出循环并执行到方法结束。 但我观察到循环有一种奇怪的行为。它循环得非常好(省略以下行时显示stopWatch.getTime()的连续计数: 但是当我把它们放回去时,它会停止显示秒表的连续递增时间,因为它会朝着时间限制增加(在这一点上,它应该停止)。即使玩家没有输入任何命令或输入。
迭代器无效是如何处理的,而不是循环? 例如,这段代码不起作用,因为迭代器在插入后无效: 但是,如果我用这个for循环替换while循环,它会正确编译和运行: 为什么for循环有效而while循环无效?
您好,我对jquery没有什么问题。首先,我有: 大众BORA 1.9TDI 1990 1995 奥迪A3 2.0TFSI 2006 2008 但我想实现: VW BORA 1.9TDI 1990 VW BORA 1.9TDI 1991 VW BORA 1.9TDI 1992 VW BORA 1.9TDI 1993 VW BORA 1.9TDI 1994 VW BORA 1.9TDI 1995 A
问题内容: 在下面的示例代码中,是否真的需要counter = 0,还是有更好,更多的Python方法来访问循环计数器?我看到了一些与循环计数器有关的PEP,但它们要么被延迟要么被拒绝(PEP 212 和PEP 281)。 这是我的问题的简化示例。在我的实际应用程序中,这是通过图形完成的,整个菜单必须每帧重新绘制一次。但这以易于复制的简单文本方式进行了演示。 也许我还应该补充一点,我正在使用Pyt