【问题标题】:Method to return boolean from parameter of array int从数组 int 的参数返回布尔值的方法
【发布时间】:2016-02-19 23:12:07
【问题描述】:

好的,这是我的第一篇文章。首先,我一直在尝试自己解决这个问题,但是已经几个小时了,我仍然迷路了。我试过在网上搜索,但没有足够具体的东西出现。这是项目的要求:

  1. 该类必须包含一个 int 类型的私有实例字段并命名为 checkNumber 。声明该字段的位置不应进行显式初始化。
  2. 它必须提供一个无参数的构造函数来初始化值 checkNumber 字段的值为 23。
  3. 它必须提供一个名为 setCheckNumber 的公共方法,该方法接受 一个 int 类型的参数,设置私有的值 字段为参数的值,并且没有返回值。 5. 它必须提供另一个名为 firstLastCheck 的公共方法 将 ArrayList 作为其参数并返回一个布尔值。 如果列表中的初始值或最后一个值等于 实例字段 checkNumber 然后该方法返回 true; 否则返回false。 该方法可以假设参数是一个至少包含 一个元素;也就是说,它不是空列表,也不为空。

这是我目前所拥有的:

public class BasicsA {
 //fields
 private int checkNumber;
 //constructor to initialize fields
 public BasicsA() {
     //initialize checkNumber
     checkNumber = 23;
 }
 //method to take input and change checkNumber
public void setCheckNumber(int nextNumber) {
    checkNumber = nextNumber;
}
//method to return boolean value
public boolean firstLastCheck(ArrayList<Integer>) {

        }
}

现在,我尝试了各种改变。喜欢使用firstLastCheck(nameofArrayVariable)。通常它需要一个标识符,但如果我让它工作它根本无法返回一个 Array int 作为布尔值。它也让我感到困惑,没有指令首先创建数组或将其定义为字段。 当数组中还没有元素时,它如何检查第一个和最后一个数组元素?你会认为 checkNumber 会将新的 int 传递到数组中,但它并没有说要这样做。

对不起,我希望我没有把这件事复杂化。

编辑:

public boolean firstLastCheck(ArrayList<Integer> listInt) {
        if(listInt.get(0) == checkNumber || listInt.get(listInt.size() - 1) == checkNumber) {
        return true;
    } else {
    return false;
    }
}

那么如何使用 BlueJ IDE 进行检查呢?我不明白它想要什么?

【问题讨论】:

  • "如果列表中的初始值或最后一个值等于实例字段 checkNumber 中的值,则该方法返回 true;否则返回 false。"。您不会将数组列表作为布尔值返回。您检查给定数组列表中的第一个或最后一个元素是否与您的私有变量匹配,如果匹配,则返回 true,否则返回 false。
  • 天哪,我不知道我是怎么忘记那个规范的。我确实看到了,并且正在考虑如何引用 checkNumber,返回的布尔值让我失望。谢谢你,我会继续努力的。
  • 我已经看到你的问题的编辑,如果你检查我上面的答案,我告诉你如何在 main() 函数中检查这段代码。
  • 对不起 Miquel,感谢您的帮助,但我的意思是使用 IDE 调用该方法,而不再对源代码做任何事情。不过,我可能只是感到困惑,也许我们不应该以这种方式调用该方法。我会尝试你的方法,至少检查它是否有效。
  • 那么您的意思是调试您的方法吗?如果是这样,我很抱歉,我从来没有使用过 BlueJ IDE,所以我不知道如何调试它。无论如何,我告诉你的方法是检查代码的好方法,因为这可能是你的老师检查它的方法。你总是可以写更多的代码来检查你应该做什么,尽管你没有交付它。

标签: java arrays


【解决方案1】:

该方法应如下所示:

public boolean firstLastCheck(ArrayList<Integer> yourList) {

    return list.get(0) == this.checkNumber || list.get(yourList.size() - 1) == this.checkNumber;


}

然后,如果你想检查它是否有效,你可以在你的 main() 函数中声明一个 ArrayList,填充它,最后调用 firstLastCheck() 方法。 它会是这样的:

public static void main(String [ ] args){

    ArrayList <int> my_values = new ArrayList<>();

    my_values.add(1);
    my_values.add(2);
    my_values.add(3);
    my_values.add(23); //the last element is equal to checkNumber

    System.out.print("firstLastCheck result: " + firstLastCheck(my_values));

}

【讨论】:

    【解决方案2】:

    除了类型之外,您还需要给ArrayList 一个本地名称。然后你需要检查第一个和最后一个值。比如,

    public boolean firstLastCheck(ArrayList<Integer> list) {
        return list.get(0) == checkNumber || list.get(list.size() - 1) == checkNumber;
    }
    

    【讨论】:

    • 好吧,我确实在几次尝试中都得到了这个名字,但我可能在 return 语句中有一个错误。好的,我再去试试!谢谢。
    • 好的,所以看起来可行,但只有添加了 ==checkNumber。没有它,它说不能转换类型。所以这就引出了另一个问题,当调用这个方法时我无法理解它想要什么(语法),它不会接受 int,我如何输入索引 int?
    • 您缺少编译器抱怨的转换类型错误。编译器抱怨,因为如果您使用 = 而不是 ==(往往会发生),您分配值而不检查两个变量是否相等。因此,您不能将整数分配给布尔值,反之亦然。同样使用==,您无法比较不同的类型。
    • 您也不能将int 作为boolean 返回,您可以使用== 检查原始值的相等性。
    猜你喜欢
    • 2012-11-04
    • 2016-01-14
    • 2018-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-03
    • 2012-02-03
    相关资源
    最近更新 更多