在for循环

时间:2015-10-12 04:16:16

标签: java for-loop

我已经搜索了这个具体问题的答案,但还没找到任何东西。我需要找到输入数字的最大值和最小值,但我需要的值在for循环中,我无法弄清楚如何在它之外使用它们。

System.out.print("How many numbers do you want to input?");

    int totalNumbers = console.nextInt();

    int minMax = 0;
    for(int i = 1; i <= totalNumbers; i++){
        System.out.print("Number " + i + ": ");
        int inputNumbers = console.nextInt();
    }
    System.out.println();

    int smallest = Math.min(minMax);
    System.out.println("Smallest = " + smallest);
    int largest = Math.max(minMax); 
    System.out.println("Largest = " + largest);

我不需要更改代码就能使我走上正轨。谢谢!

5 个答案:

答案 0 :(得分:4)

你能注意到以下循环的问题吗?

for(int i = 1; i <= totalNumbers; i++){
        System.out.print("Number " + i + ": ");
        int inputNumbers = console.nextInt();
    }

您正在运行循环totalNumbers次,并且每次创建名为int的新inputNumbers并存储从控制台收到的值。还在哪里更改minMax的值?此外Math.min(or max)不会采用单一参数,甚至不会编译。

现在你有几个选择:

  1. 将所有数字存储在数组中,然后使用某种实用方法遍历min和max元素。
  2. 设置一些最小值和最大值并运行循环以获取所有项目并同时跟踪循环中的最小值和最大值。
  3. 我不是在写任何解决方案,因为我希望你自己尝试一下。

答案 1 :(得分:4)

根据oracle文档,Math.min()和Math.max()方法只能比较两个值。将值导入数组,然后对数组执行操作,应该可以很容易地找到最小值和最大值,以及任何其他数据操作。

int[] numbers = new int[totalNumbers];

for (int i = 0; i < totalNumbers; i++) {
    numbers[i] = console.nextInt();
}

//Other Operations

答案 2 :(得分:3)

除非我误读了您想要的内容,否则您只能在for循环的外部维护一个变量并检查它们吗?

int minMax = 0;
int smallest = 0;
int largest = 0;

for(int i = 1; i <= totalNumbers; i++){
    System.out.print("Number " + i + ": ");
    int inputNumbers = console.nextInt();
    if(inputNumbers > largest){
        largest = inputNumbers;
    } else if (inputNumbers < smallest){
        smallest = inputNumbers;
   }
}
System.out.println();

System.out.println("Smallest = " + smallest);
System.out.println("Largest = " + largest);

这是检查输入值并确定它们是当前已知的最小值还是最大值的最直接和最合理的方式(编辑:除非您要求使用Math.minMax

答案 3 :(得分:2)

伪代码:

smallest := +∞
largest  := -∞

for each number read, n:
    if n > largest:
        largest := n
    if n < smallest:
        smallest := n

print the results

提示:

Java int s不能代表±∞。请改用Integer.MIN_VALUEInteger.MAX_VALUE

答案 4 :(得分:1)

你可以通过将if else条件放入for循环中来实现...比如

  1. 在外部循环1中获取2变量用于最大值,而将其他变量用于最小值存储。
  2. 内部循环将输入数分配给min和max第一次。
  3. 之后用这个comare下一个数字并重新分配值。
  4. 在循环结束时,您将找到min和max。