2014-04-28 52 views
2

我有下面的代碼:BlueJ的 - Java代碼的

public class Square { 
    public static double[] square (double a[]){ 
     double[] s = new double[a.length]; 
     for (int i=0; i<a.length; i++) { 
      s[i]=a[i]*a[i]; 
     } 
     return s; 
    } 
    //other methods... 
} 

每當我BlueJ的方法調用和選擇double[] square (double a[])和類型0,1,2和3,我不斷收到預期的錯誤信息的錯誤標識。所以我無法測試我的數字,我該如何擺脫這個問題?正常如果你輸入0,1,2和3,你應該得到每個數字的平方,但由於某種原因,我沒有管理它。

編輯:

這是我正在試圖測試方法:

Square.square(0, 1, 2, 3); 
+1

發佈您如何測試此代碼。 –

+0

@LuiggiMendoza,這裏是截圖:http://i1341.photobucket.com/albums/o756/deli0102/IT/java_bluej_error_28_apr_2014_zps903ce777.png – Acemi

+0

你的代碼不是模塊化的...平方部分可以與投影部分分開 –

回答

5

的問題是,您需要發送一個double[]但你送4個int參數。有兩種方法來解決這個問題:

  1. 發送一個真正double[]

    Square.square(new double[] { 0, 1, 2, 3}); 
    
  2. 更改接收可變參數的方法:

    public static double[] square (double ... a) 
    

    現在你可以通過任何數量的參數:

    Square.square(0, 1, 2, 3, 4, 5, ...); 
    

只記得來存儲您在另一個double[]方法的結果,以評估結果:

double[] results = Square.square(<add the arguments depending on the chosen solution>); 
System.out.println(java.util.Arrays.toString(results)); 

要測試你的代碼的工作,你可以簡單地寫一個public static void main方法,並調用所需方法來查看它是否可以執行,並可能評估結果。你甚至可以做這裏面Square類:

public class Square { 
    public static double[] square(double[] a) { 
     //the definition of your method... 
    } 

    public static void main(String[] args) { 
     //calling the method to seek if compiles 
     double[] results = Square.square(new double[] { 0, 1, 2, 3 }); 
     //printing the results 
     System.out.println(java.util.Arrays.toString(results)); 
    } 
} 

如果你想/需要測試的代碼,這意味着,執行它和評估,如果你得到預期的效果,你可以寫一個單元測試使用JUnit。我只會添加一個測試如何的示例:

public class SquareTest { 
    @Test 
    public void testSquare { 
     double[] expectedResults = { 0, 1, 4, 9 }; 
     double[] results = Square.square(new double[] { 0, 1, 2, 3 }); 
     Assert.assertArrayEquals("Not the desired results.", expectedResults, results, 0.00001); 
    } 
} 
+0

好的,我給出的代碼實際上是一個測試的完整答案,原始問題是這樣的:實現一個方法public static double [] square(double [] a),返回一個包含元素平方的新數組它的數組參數(輸入數組應該保持不變)。例如,如果輸入數組是{0,1,2,3},那麼輸出是{0,1,4,9}。 – Acemi

+0

我想測試這段代碼,然後改變一下並再次測試,以便了解我是否正確理解了所有內容。 – Acemi

+0

@Acemi和我的回答涵蓋了情況。看起來你需要應用第一個選項來測試你的方法。 –