-1

我尝试编写一个程序来查找最大数,但结果显示为“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

4 回答 4

4

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

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

于 2013-08-20T13:50:41.573 回答
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 );
   }
}
于 2013-08-20T13:58:44.503 回答
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仅限于循环。在那里你可以确定一个最大值(...)。有时最好也为结果设置一个变量。

于 2013-08-20T13:54:03.427 回答
-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);
   }
于 2013-08-20T13:57:27.757 回答