【问题标题】:BlueJ - Java CodeBlueJ - Java 代码
【发布时间】:2014-04-28 15:29:47
【问题描述】:

我有以下代码:

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);

【问题讨论】:

  • 发布您尝试测试此代码的方式。
  • @LuiggiMendoza ,这里是截图:i1341.photobucket.com/albums/o756/deli0102/IT/…
  • 你的代码没有模块化...平方部分可以和投影部分分开
  • @SargeBorsch 你的评论是什么意思?你能提供更多信息吗?
  • @Guys,我是一个绝对的初学者,因此我总是寻求简单的东西,因此我非常喜欢 LuiggiMendoza 解决方案和 cmets。 Sarge Borsch 感谢 cmets,但对于像我这样的绝对初学者,我真的更喜欢简单的东西。

标签: java


【解决方案1】:

问题是您需要发送一个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);
    }
}

【讨论】:

  • 好的,我给出的代码实际上是一个测试的完整答案,原来的问题是:实现一个返回新数组的方法 public static double [] square (double[]a)包含其数组参数元素的平方(输入数组应保持不变)。例如,如果输入数组是 {0,1,2,3},那么输出就是 {0,1,4,9}。
  • 我想测试一下这段代码,然后稍作改动并再次测试,以了解我是否正确理解了所有内容。
  • @Acemi 我的回答涵盖了这种情况。看起来您需要应用第一个选项来测试您的方法。
  • 好的,我应该把这一行放在我的代码中的什么位置 ==> Square.square(new double[] { 0, 1, 2, 3} ); ?目前我的代码看起来像这样==> public class Square { public static double[] square (double a[]){ double[] s = new double[a.length]; for (int i=0; i
  • 非常感谢我使用了这段代码 => public class Square { public static double[] square(double[] a) { //你的方法的定义... } public static void main(String[] args) { //调用方法来寻找 if 编译 double[] results = Square.square(new double[] { 0, 1, 2, 3 }); //打印结果 System.out.println(java.util.Arrays.toString(results)); } } 并将我找到的方法添加到代码的方法部分,现在它正在工作,完美,再次感谢您。
猜你喜欢
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 2018-04-04
  • 1970-01-01
  • 1970-01-01
  • 2016-02-28
  • 2016-01-08
  • 2017-04-26
相关资源
最近更新 更多