我得到了以下代码:
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);
问题是您需要发送一个double[]
,但您要发送4个int
参数。有两种方法可以解决这个问题:
-
发送一个真正的
double[]
:Square.square(new double[] { 0, 1, 2, 3} );
-
更改接收varargs:的方法
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);
}
}