2017-03-04 4 views
0

配列内で最大の数値を見つけて印刷したいが、最大の数値が不正確に出力される。以下は出力です。最大の番号の2番目と3番目の出力が間違っています。以下はJava:配列が最大の数値エラーを返す

enter image description here

私のコードです:あなたは、あなたのmax値をリセットすることはありません

double x [][] = {{3.24,-0.96}, 
       {-1.56,-0.61}, 
       {-1.1,2.5}, 
       {1.36,-4.8}}; 
String y [] = {"B","C","A","C"}; 
double w[][] = {{0,1.94,3.82},{0,-4.9,-4.03},{0,4.48,3.25}}; 
double threshold = 1; 
int n = x.length; 
int m = w.length; 
double total [] = new double[3]; 
double max = 0; 
double input = 0; 

for(int i=0;i<n;i++){ 
    for(int j=0;j<m;j++){ 
      total[j] = (threshold * w[j][0]) + (x[i][0] * w[j][1]) + (x[i][1] * w[j][2]); 
      System.out.print(total[j] +", "); 
      input = total[j]; 
      max = Math.max(input,max); 
    } 

    System.out.println(); 
    System.out.println("Maximum is "+ max); 
} 

答えて

0

引き続きiループの最大値をjループから引き離しています。

後続のiループの開始前に、Maxからminの値をリセットします。また、最初の宣言をseroからmin値に編集します。 下記を参照ください

double x [][] = {{3.24,-0.96}, 
       {-1.56,-0.61}, 
       {-1.1,2.5}, 
       {1.36,-4.8}}; 
String y [] = {"B","C","A","C"}; 
double w[][] = {{0,1.94,3.82},{0,-4.9,-4.03},{0,4.48,3.25}}; 
double threshold = 1; 
int n = x.length; 
int m = w.length; 
double total [] = new double[3]; 
double max = Integer.MIN_VALUE; 
double input = 0; 

for(int i=0;i<n;i++){ 
    for(int j=0;j<m;j++){ 
    total[j] = (threshold * w[j][0]) + (x[i][0] * w[j][1]) + (x[i][1] * w[j][2]); 
     System.out.print(total[j] +", "); 

input = total[j]; 
max = Math.max(input,max); 
} 

System.out.println(); 
System.out.println("Maximum is "+ max); 
max = Integer.MIN_VALUE; 
} 
3

、それはまだ、最後の計算から最大として設定されています。

また、すべての値がゼロ未満になると失敗します。毎回実行する前にmaxInteger.MIN_VALUEに初期化する必要があります。

関連する問題