【问题标题】:When i enter my numbers only the min is read not max当我输入我的数字时,只读取最小值而不是最大值
【发布时间】:2015-02-12 04:57:18
【问题描述】:

在我的代码中,我尝试输入 10 个它执行的数字并输出它执行的最小数并输出它不执行的最大数,我尝试更改最大算法中的 ,但它没有不行。有人对我应该做什么有任何建议吗? 提前致谢

import javax.swing.JOptionPane;
public class Results {
    public static void main (String args []){

        //Variables
        //Set up Array
        int arr[]; //Declare Array
        arr = new int [10];
        int min = Integer.MAX_VALUE;
        int max = Integer.MIN_VALUE;;

        //Input
        //Set up loop

        //Quiz 1
        for(int i = 0; i<10;i=i+1){
        arr[i]=Integer.parseInt(JOptionPane.showInputDialog(null, "Please enter a number for quiz 1"));

        }


        //Minimum


        for (int i = 0; i < min; i++) {
            if (arr[i] < min) {
                min = arr[i];
            }
            }

        //Maximum


        for (int i = 0; i > max; i00) {
            if (arr[i] > max) {
            max = arr[i];
            }
            }

        //Output
        JOptionPane.showMessageDialog(null, "The minimum is " +min);
        JOptionPane.showMessageDialog(null, "The maximum is " +max);







        }



    }

【问题讨论】:

  • 您能发布可编译的代码吗? for (int i = 0; i &gt; max; i00)。此外,这当然不是您正在寻找的 for-condition(对于两个循环)。
  • 代码编译
  • 我怀疑for (int i = 0; i &gt; max; i00) 编译。

标签: java arrays loops max min


【解决方案1】:

您的 for 循环在错误的条件下检查最小值/最大值。因此,如果您有 1,2,0 之类的数字,并且您尝试使用现有代码查找 min max,则循环 for min 将是:

i =0, i<MAX integer value
assign min as 1
i=1, i<1
it will exit and you wont get 0 as output

同样适用于带有最大条件检查的循环。

将你的 for 循环更改为:

for (int i = 0; i < arr.length; i++) {
     if (arr[i] < min) {
         min = arr[i];
     }
}

for (int i = 0; i < arr.length; i++) {
    if (arr[i] > max) {
         max = arr[i];
    }
}

【讨论】:

  • 你能不能至少解释一下有什么不同以及为什么?
  • 我同意@Takendarkk “你的for循环检查最小/最大条件是否错误”但是为什么呢?如果操作员问这个问题,那肯定是因为他看不出哪里出了问题。尝试努力解释原因并使其成为更好的答案(用小例子或解释)。
  • 谢谢 ir 工作得很好,但你能解释一下你做了什么吗。谢谢 OP
  • @JoeCommons 我更新了您的 for 循环条件并从中删除了最小或最大比较,而是使用整个数组的大小来检查数组中的每个元素。顺便说一句,您可以将两个循环合二为一。
  • ... 或者您可以在询问输入时摆脱循环并计算/更新最小值和最大值。
猜你喜欢
  • 2021-07-02
  • 1970-01-01
  • 2021-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多