2017-09-16 33 views
-3

返回由正整數n開始並以1結尾的Hailstone序列組成的字符串。 字符串應由一串數字組成,每個數字後跟一個空格。當序列中出現一個數字m (1除外)時,後面應接着nextHailstone(m)。 示例:nextHailstone(1)爲「1」,nextHailstone(5)爲「5 16 8 4 2 1」。爲什麼我的測試用例不能用於冰雹方法?

public static String hailstones (int n) 
{ 

     int calculation = 1; 
     System.out.print(n + " "); 
     while (n > 1) 
     { 

      if (n % 2 == 0) 
      { 

      n /= 2; 

      } 
      else 
      { 

      n = (n*3) + 1; 

      } 
      calculation++; 
    System.out.print(n + " "); 



    } 
     return " "; 
} 

當我在main方法中調用方法但測試用例失敗時,代碼正常工作。

@Test 
public void testHailstones() 
{ 
    assertEquals("1 ", hailstones(1)); 
    assertEquals("16 8 4 2 1 ", hailstones(16)); 
    assertEquals("7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 ", hailstones(7)); 
} 

這些是測試用例。任何對此的見解都會很棒。謝謝!

+1

您可能正確地打印出序列,但是您沒有返回字符串。你需要一個字符串來存放冰雹,所以單元測試可以通過。 – gameweld

+0

你正在返回''「'這就是爲什麼。你爲什麼不返回你的結果? – Ofisora

+0

@Ofisora:每次都會返回1。 – Makoto

回答

4

每次調用函數時都返回" "。你需要建立一個內部字符串並返回結果。

相關問題