-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

あなたのコードは、ユーザーに 5 つの数値を入力するように要求し、それらを配列の最初の 5 つのスロットに割り当てます。次に、6 番目と 7 番目のスロット (どちらもゼロ) を比較し、常に 2 番目の print ステートメントを実行します。これは、2 つの数値が常に同じであるためです。

これを行う正しい方法は、可能な入力値よりも小さい値に初期化された変数から始めて (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[].

入力用のループが 1 つある必要がありi、ループに制限されます。そこで、最大値 (...) を決定できます。場合によっては、結果にも変数を使用する方がよい場合があります。

于 2013-08-20T13:54:03.427 に答える