2017-03-04 37 views
0

我想找到數組中最大的數字,然後將它們打印出來,但我得到不正確的最大數量輸出。下面是輸出,你可以看到第二個和第三個輸出的最大數字是不正確的。Java:數組返回最大數字錯誤

enter image description here

下面是我的代碼:

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

您將繼續保留j循環的最大值,以用於後續的i循環。

在後續i循環開始之前,將Max的值重置爲最小值。還要編輯從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

你永遠不會重置max價值,所以還是設置爲從上次運算時最大。

當所有值都低於零時,它也會失敗。您應在每次運行前初始化maxInteger.MIN_VALUE