2017-10-20 119 views
-9

當我爲58.18此代碼不能正常工作

public class text { 

    public static void main(String[] args) { 
     //Data Array 
     double data[]={19.2,22.3,32.51,39,41.16,49.46,55.91,58.18}; 

     //Finding minimum angle 
     double minimum_angle=0; 
     for(int counter=0;counter<data.length;counter++){ 

      if(data[counter]<data[counter++]){ 
       minimum_angle=data[counter]; 
      } 
      else {minimum_angle=data[counter++];} 
     } 
     System.out.print(minimum_angle); 




    } 

} 

輸入這個代碼,我得到的答案,但,當我鍵入相同的一點點修改,我得到55.91。爲什麼這樣?

public class Main_class { 
    public static void main(String args[]){ 

     //Data Array 
     double data[]={19.2,22.3,32.51,39,41.16,49.46,55.91,58.18}; 

     //Finding minimum angle 
     double minimum_angle=0; 
     for(int counter=0;counter<data.length;counter++){ 
      double x=data[counter]; 
      double y=data[counter++]; 
      if(x<y){ 
       minimum_angle=x; 
      } 
      else { 
       minimum_angle=y; 
      } 
     } 
     System.out.print(minimum_angle); 
    } 
+1

1)你很清楚地說:代碼*是*工作。 2)什麼是「小差異」?不要讓你的觀衆通過你的代碼梳理。 – kryger

+0

如果你調用'counter ++'兩次,你增加了'counter'兩個 – khelwood

+4

這是因爲你的算法沒有做它應該做的事。停止使用++。停止比較一個元素和下一個元素。將每個元素與當前最小值進行比較。 –

回答

3

您的代碼段都不正確。

您正在濫用後增量運算符。

if(data[counter]<data[counter++]) 

將永遠是真實的,就像

if(data[counter]<data[counter]) 

永遠不會爲真。

後增量運算符返回增量變量的原始值。

不知道爲什麼你在循環體中增加計數器。你只應該在for語句中增加它。而爲了找出最小,必須比較​​到minimum_angle

double minimum_angle = Double.MAX_VALUE; 
for(int counter = 0; counter < data.length; counter++) { 
    if(data[counter] < minimum_angle) { 
     minimum_angle = data[counter]; 
    } 
} 
0
public class text { 

public static void main(String[] args) { 
    //Data Array 
    double data[] = {19.2,22.3,32.51,39,41.16,49.46,55.91,58.18}; 

    //Finding minimum angle 
    double minimum_angle = data[0]; 
    for(int counter = 1;counter < data.length;counter ++){ 

     if(minimum_angle < data[counter]){ 
      minimum_angle = data[counter]; 
     } 
    } 
    System.out.print(minimum_angle); 




} 

} 

初始化minimum_angle數據[0],並與索引1的數據陣列比較minimum_angle如果minimum_angle小於數據[指數]值,然後將minimum_angle分配給data [index]以從數組中獲得最小雙精度值。

0

看起來你是編程新手。 無論如何嘗試下面的代碼。

double data[]={19.2,22.3,32.51,39,41.16,49.46,55.91,58.18}; 

    double minimum_angle=data[0]; 
    for(int counter=0;counter<data.length;counter++) 
     if(minimum_angle < data[counter]) 
      minimum_angle = data[counter]; 

    System.out.print(minimum_angle); 
+0

看起來你是堆棧溢出的新手。修正OP的代碼沒有任何解釋或解釋他們做錯了什麼(特別是在這樣的問題中)並不是一個好的答案。 – kryger

+0

有很多錯誤,所以我解釋。但從下次如果我回答我會給出一個解釋。謝謝。 – bnayagrawal