2017-06-26 65 views
-2

Java新的..我需要創建一個方法Sum包括一個while循環。該方法將採用一個參數並計算該數字的總和。這是我的:JAVA while循環裏面的方法

public class Summing { 

public static void main(String [] args){ 

    double result=5; 

    Summing mySum=new Summing(); 

    double Sum = mySum.Sum(result); 

    System.out.printf("\nthe sum is :%d " , Sum); 

} 

public static double Sum(double result) { 
    result = 5; 

    double i = 1; 

    while (i <= result) 

    { 
     result += i; 

     System.out.println("count:" + result); 

     i = i++; 

    } 
    return result; 
} 
} 

但看起來像我有一個無限循環它不斷計數..我明白任何幫助。

+2

嘿阿里,你會這麼好心,正確格式的代碼?乾杯。 – domsson

+9

不要寫'i = i ++;',而只需寫'i ++;'。 – Jesper

+5

當你在循環中增加'result'變量時,這是一個無限循環,使得'i'不可能達到'result'。使用另一個變量來跟蹤總和。 – jpw

回答

1

這個位置:

result += i; 

i++

使循環無限的組合,因爲他們都得到同步增加,這使得不可能未滿足這個條件

while (i <= result) 
1

給另一名你的論點(例如「限制」),並將結果聲明爲double。
哦,你增加的方式i是不正確的。

public static double Sum(double limit) { 
    double result=5; 
    double i=1; 
    while(i<=limit) { 
     result+=i; 
     System.out.println("count:" + result); 
     i++; 
    } 
    return result; 
    } 
+1

@湯姆,謝謝。 –

2

你寫I = I ++,它不會增加我。這價值相當於創建這樣一個變量:

i=i++ ; 

相當於

tmp=i ; 
i=i+1 ; 
i=tmp ; 

你應該只寫i ++或i = i + 1。

0

我已經刪除了將您的代碼放在無限循環中的條件。

你做了什麼的是,在條件雖然(我已加我,以及因此在每次迭代中,它導致無限循環。

public class Summing { 

     public static void main(String [] args){ 

      double result=5; 

      Summing mySum=new Summing(); 

      double Sum = mySum.Sum(result); 

      // System.out.printf("\nthe sum is "+Sum); 

     }//end main 

     public double Sum(double result) { 

      double sum=0; 
      double i=1; 

      while (i <= result) { 
       sum += i; 
       i++; 
       System.out.printf("\nthe sum is "+sum); 
      } return result; 

     }//end sum 

    }//end Summing 
+0

現在可以..沒必要給正面答案 –

+1

負面分數對不起,我只是忘記把解釋在那裏 –

+0

而你已經修好了,所以現在很好。請記住爲你的答案做到這一點。 OP和未來的讀者將從中受益。 – Tom

0

1)聲明爲靜態的數總和法,所以你不需要創建分離的Summing對象。 2)在Sum方法中,你重寫你放在main中的結果參數。 3)在循環中你增加結果以及我,所以我總是會比結果少。 因此,你應該有這樣的事情:(!壓痕)

public class Summing { 

public static void main(String [] args){ 

    double result=5; 
    double sum = Summing.Sum(result); 
    System.out.printf("\nthe sum is :%d " , Sum); 
} 

public static double Sum(double iterations) { 
    double i = 1; 
    double result = 0; 
    while (i < = iterations){ 
     result += i; 
     System.out.println("count:" + result); 
     i++; 
    } 
    return result; 
} 
}