2015-08-13 49 views
2

我有一種方法用於顯示最高值並顯示它所屬的索引號。到目前爲止,它已經可以顯示最高值,但索引號無法顯示。我該怎麼做才能讓系統顯示i的值呢?顯示數組中的最大值和索引號

private void pick_highest_value_here_and_display(ArrayList<Double> value) throws Exception { 
    // TODO Auto-generated method stub 
    double aa[]=value.stream().mapToDouble(v -> v.doubleValue()).toArray(); 
    double highest=Double.MIN_VALUE; 

    System.out.println(highest); 
    for(int i=0;i<aa.length;i++) 
    { 
     if(aa[i]>highest) 
     { 
      highest=aa[i]; 
     } 
    } 
    System.out.println(highest); 
    System.out.println(i); // Error: create local variable i 
} 
+2

你可以在裏面打印,如果條件:) –

+2

您必須聲明你上面的變量您的循環 –

+0

@sᴜʀᴇsʜᴀᴛᴛᴀ將打印* *目前人數最多的每一次的指數,而不是的索引「全球」最多 – vefthym

回答

8

你只需要修改代碼以保存MAX和i

private void pick_highest_value_here_and_display(ArrayList<Double> value) throws Exception { 
    // TODO Auto-generated method stub 
    double aa[]=value.stream().mapToDouble(v -> v.doubleValue()).toArray(); 
    double highest=Double.MIN_VALUE; 
    int index=0; 
    System.out.println(highest); 
    for(int i=0;i<aa.length;i++) 
    { 
     if(aa[i]>highest) 
     { 
      index=i; 
      highest=aa[i]; 
     } 
    } 
    System.out.println(highest); 
    System.out.println(index); 
} 
+0

謝謝!這就是我正在尋找的 –

+1

@ user5156075如果這是解決方案,正如您所說,那麼請接受答案 – vefthym

2

你要存儲的最高值的指數太:

private void pick_highest_value_here_and_display(ArrayList<Double> value) throws Exception { 
    // TODO Auto-generated method stub 
    double aa[]=value.stream().mapToDouble(v -> v.doubleValue()).toArray(); 
    double highest=Double.MIN_VALUE; 
    int highestIndex; 

    System.out.println(highest); 
    for(int i=0;i<aa.length;i++) 
    { 
     if(aa[i]>highest) 
     { 
      highest=aa[i]; 
      highestIndex=i; 
     } 
    } 
    System.out.println(highest); 
    System.out.println(highestIndex); // Error: create local variablre i 
} 
+1

誰回答了這個問題? – brso05

+1

謝謝,但你忘了初始化最高索引 –

3

你需要一個更多變量來存儲最高變量的索引。

int highestIndex = 0;//Store index at some other variable 
for(int i=0; i< aa.length; i++) { 
    if(aa[i] > highest) { 
     highest = aa[i]; 
     highestIndex = i; 
    } 
} 
System.out.println("Highest value :"+highest+ " found at index :"+highestIndex); 
+2

此代碼不會顯示最高值,它將顯示高於「Double.MIN_VALUE」的第一個值。 – Varun