确保我正确地解决了这个问题

时间:2011-05-12 23:33:53

标签: java

这是我的第一个编程课程,我想确保我正确地解决了这个问题。如果你能查看我的作品,我将不胜感激。

在给定起始余额和Check对象数组的情况下,编写一个计算并返回支票帐户余额的方法。您可以假设Check类已经存在,并且有一个方法可以从特定的检查对象中获取金额:double getAmount()

数组未满,可能有空白 - 确保在尝试访问之前测试是否有对象!使您的代码适用于任何长度数组!

为您提供了该方法的标题:

public double computeBalance(double startingBalance, Check[] register) {

    int i = 0; // i must be initialized and declared somewhere at least
    double total = 0.0;

    while ((i >= check.length) && check[i] != null) { // is >= correct? you do i++!
           total = (total + getAmount(check[i])); // should you add/compute somewhere 
                                                      // the given amounts
           i++;

    }  

    System.out.println(total);
}

4 个答案:

答案 0 :(得分:7)

忘记编程一秒钟。如果我告诉你“这是你帐户中的起始余额。”然后递给你一堆支票并告诉你计算期末余额,你会怎么做?一旦理解了这一点,就可以开始解决编程问题了。

有些问题:

  • 您在哪里跟踪帐户余额?
  • 如果register中的其中一个广告位为空(即null),您的循环会发生什么?
  • 循环中的这个check变量是什么?它被宣布在哪里? check真的应该叫它吗?
  • 该函数声明为返回double。你回来了什么?
  • 您是否尝试过编译代码?会发生什么?

答案 1 :(得分:1)

当你达到差距时,执行将结束。在循环内部使用if语句代替null检查。

答案 2 :(得分:1)

如果您可以通过编译器运行您的代码(听起来您不能,或者至少不被鼓励),它会告诉您它不知道i,{ {1}}或check是。

没有引用方法参数的方法体通常缺少某些东西 - 特别是如果参数声明是由教师给出的。

再次查看循环条件。 getAmount在开始时的价值是多少?

答案 3 :(得分:1)

我知道您要求的不仅仅是解决方案本身,但显然有更好的人来指导您。您可以使用我的示例作为对其他人向您解释的内容的参考。

public double computeBalance(double startingBalance, Check[] register) {

    // let's start off from the starting balance
    double total = startingBalance;

    // go over all elements starting from 0
    for (int i = 0; i < check.length; i++) {

        // make sure you did not encounter null element
        if (register[i] != null) {

            // increase the total by the amount of the Check
            total += register[i].getAmount();
        }
    }

    // and finally return the resulting value
    return total;
}