逻辑错误:Max总是“0”?

时间:2013-08-20 13:45:14

标签: java

我尝试编写一个程序来查找最大数字,但结果显示为“0”。这是我的代码:

public class Max_N_value {
    public Max_N_value() {}
    public static void main(String[] args) {
        int i; int mynum[] = new int[50];

        for( i=0;i<5;i++) 

            mynum[i]=Integer.parseInt(JOptionPane.showInputDialog(null," Value "));

        if(mynum[i]>mynum[i+1]) {
            JOptionPane.showMessageDialog(null,"Maximum value is "+mynum[i]);
        else {
            JOptionPane.showMessageDialog(null,"Maximum value is  : "+mynum[i+1]);
        }

    }
}

4 个答案:

答案 0 :(得分:4)

您的代码要求用户输入五个数字,并将它们分配给数组中的前五个插槽。然后它比较六个和第七个槽,两个都是零,并且总是执行第二个print语句,因为这两个数字总是相同的。

执行此操作的正确方法是从初始化为小于任何可能输入值的值的变量(Integer.MIN_VALUE工作)开始,然后遍历整个数组,将每个值与该变量进行比较。如果数组中的值大于变量,请将变量设置为数组中的值。在此过程结束时,变量将保持数组中的最大值。

答案 1 :(得分:1)

以下代码应该有效。如果目的只是计算最多5个数字,则绝对不需要在数组中读取它们。

public class Max_N_value {
    public static void main(String[] args) {
       int max= Integer.MIN_VALUE ;
       for(int i= 0 ; i < 5 ; i++ ) {
          int newNum= Integer.parseInt( JOptionPane.showInputDialog(null," Value ") ) ;
          if( newNum > max ) max= newNum ;
       }
       JOptionPane.showMessageDialog(null,"Maximum value is "+ max );
   }
}

答案 2 :(得分:0)

   int[] mynum = new int[5];
   int max = Integer.MIN_VALUE;
   for (int i = 0; i < mynum.length; i++) {
      mynum[i] = Integer.parseInt(JOptionPane.showInputDialog(null,
          "" + (i+1) + ". Value "));
      ...
   }
   JOptionPane.showMessageDialog(null,"Maximum value is  : "+max);

这使用int[] mynum而不是逻辑不合理的旧表示法:int mynum[]

应该有一个循环用于输入,i仅限于循环。 在那里你可以确定最大值(...)。有时最好为结果设置一个变量。

答案 3 :(得分:-2)

<强>被修改

现在代码已更正。

    public static void main(String[] args) {
       int i; 
       int mynum[] = new int[5];
       int max = Integer.MIN_VALUE;

       for( i=0; i< mynum.length; i++)
       {
          int num = Integer.parseInt(JOptionPane.showInputDialog(null, "Value"));
          if(num > max) max = num;
       }
       JOptionPane.showMessageDialog(null,"Maximum number is: "+max);
   }