【问题标题】:Compare a list of integers with an integer to find the largest将整数列表与整数进行比较以找到最大的
【发布时间】:2021-10-26 02:45:02
【问题描述】:

如果第一个参数包含大于第二个参数的数字,我需要编写代码返回 true;否则返回 false。假设整数列表(第一个参数)与整数(第二个参数)进行比较。我必须使用Iterator来实现这个功能。

这是我目前的代码:

public class ListHasGreater {    
    public static boolean hasGreater(List<Integer> numbers, int number) {
        // write your code here
        Iterator<Integer> selectedNum = numbers.iterator();
        
        if (selectedNum.hasNext()){
            int result = selectedNum.next();
            while (result > number){
                return true;
            }
            return false;
        }  
    }
}

我收到了这个错误error: class, interface, or enum expected

我不确定我的代码在逻辑上是否正确,也不知道如何解决这个错误。

【问题讨论】:

  • 您不能只在 Java 中声明裸方法。它们需要在类(或枚举或接口)的范围内声明。此外,你的花括号不平衡。修复后,您需要查看逻辑错误。
  • 添加类并更正大括号后,我收到错误error: missing return statement,但我确实返回了真/假。
  • 如果selectedNum#hasNext 为假怎么办?

标签: java list loops iterator


【解决方案1】:

显式使用迭代器是一种相当古老的编程方式,您可以使用 foreach 循环并让 Java 在编译时将其转换为迭代器。

public static boolean hasGreater(List<Integer> numbers, int number) {

    for (int numInList : numbers) {
        if (numInList > number) {
            return true;
        }
    }
    return false;
}

【讨论】:

  • for循环是什么意思?对于数字中的 numInList?
  • 它称为 foreach 循环,它将遍历列表中的每个对象。本质上与使用迭代器相同,必须编写更少的代码并且必须更易于阅读
【解决方案2】:

您正在从条件返回,您还应该在循环结束时添加一个 return 语句。 代替 while (result &gt; number){return true;}应该是if(result &gt; number) return true

【讨论】:

  • 但如果我在循环外返回 true 或 false。真值将被设置并出现此错误The result of [4, 78, 21, 5, 10] and 65 did not equal true. expected:&lt;true&gt; but was:&lt;false&gt;
  • 试试这个public static boolean hasGreater(List&lt;Integer&gt; numbers, int number) { Iterator&lt;Integer&gt; selectedNum = numbers.iterator(); while (selectedNum.hasNext()) { int result = selectedNum.next(); if (result &gt; number) { return true; } } return false; }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-24
  • 2017-06-21
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多