我试图从用户的输入中获取10个整数,并找到for循环的最小值和最大值。但我的最终打印声明只打印输入的数字列表。我输了。
public static void main(String[]args) {
Scanner scan=new Scanner(System.in);
double a = 0;
double max = 0;
double min = 0;
System.out.print("Enter ten floating points: \n");
for(a=0; a <10; a++) {
a=scan.nextDouble();
if(a == 0) {
min=a;
max=a;
}
else if(a < min) {
min=a;
}
else if (a > max){
max=a;
}
}
System.out.println("Minimum value: " +min);
System.out.println("Maximum value: " +max);
}
答案 0 :(得分:3)
问题在你的for循环中将其改为
for (int x = 0; x < 10; x++) {
还有另一个问题,你需要改变
if(a == 0){
要
if (x == 0) {
答案 1 :(得分:0)
首先,您的代码不能正确运行,因为您使用相同的变量if(a == 0)
作为计数器,并使用变量来存储用户输入。你应该使用两个不同的变量。
第二个声明用于在循环内存储来自用户的输入的变量,否则它可以保留前一循环的值。
当用户输入数字0时,您的min
条件将重置max
和public static void main(String[]args) {
Scanner scan=new Scanner(System.in);
System.out.print("Enter ten floating points: \n");
double tmp = scan.nextDouble(); //read first number from user
double max = tmp; //intialize with the first input
double min = tmp;
for(int i=0; i <9; i++) { //from 0 to 8, 9 numbers since the first has already been read
double a = scan.nextDouble(); //at every loop read a number from the input
if(a < min) {
min=a;
}
//removed else since max and min are independant
if (a > max) {
max=a;
}
}
System.out.println("Minimum value: " +min);
System.out.println("Maximum value: " +max);
}
。这不是您想要的。
最后你不应该像那样初始化max / min。通过将min定义为0,如果用户仅输入正数,则min将为0,但用户从未输入0.您可以在用户的第一个条目处初始化它们。
这应该是这样的:
db.coins.find({ "serverTime" : { $gt : "1523441870", $lt : "1523441999"}});
答案 2 :(得分:0)
试试这个
Scanner scan=new Scanner(System.in);
int maximum = Integer.MIN_VALUE;
int minimum = Integer.MAX_VALUE;
for( int i=0; i<10 && scan.hasNextInt(); i++ ) {
int next = scan.nextInt();
maximum = Math.max( next, maximum);
minimum = Math.min( next, minimum);
}
System.out.println("Found maximum :"+maximum+", minimum:"+minimum);
scan.close();
首先,我们创建扫描仪。 接下来,我们设置一个最大值 - 因为整数可以是负数,我们不能使用0,但必须使用尽可能小的整数。 最低限度相同。
在for循环中,我们必须确保在10次迭代后终止循环,或者输入流没有任何更多的int。
接下来,我们使用数学函数max来找出最大的数字 - 先前找到的最大值,或扫描器中的下一个int。 并且最低限度相同。
最后,请记住关闭扫描仪,以避免资源泄漏。