public class FindNumber {
static String findNumber(List<Integer> arr, int k) {
String res = "YES";
//Unable to identify problem with this part of the code
for (int i = 0; i < arr.size(); i++) {
if (k == arr.get(i))
res = "YES";
else
res = "NO";
}
return res;
}
}
即使列表中存在整数,上述代码也不会返回NO。
答案 0 :(得分:1)
您可以只使用arr.contains()
来获取布尔值,以确定Integer
是否在列表中。然后,您可以将此值转换为YES
或NO
(如果确实需要):
String yesNo = arr.contains(k) ? "YES" : "NO";
答案 1 :(得分:0)
这将起作用:
keywords
找到整数后,您必须停止循环,您可以使用static String findNumber(List<Integer> arr, int k) {
String res = "YES";
for (int i = 0; i < arr.size(); i++) {
if (k == arr.get(i))
res = "YES";
break;
else
res = "NO";
}
return res;
}
答案 2 :(得分:0)
尝试优化您的代码...。
方法1(使用for-each循环):
static String findNumber(List<Integer> arr, int k) {
for (Integer integer : arr) {
if (integer == k) {
return "YES";
}
}
return "NO";
}
另一种方法是(使用三元运算符):
static String findNumber(List<Integer> arr, int k) {
return arr.contains(k) ? "YES" : "NO";
}
答案 3 :(得分:0)
使用流:
static String findNumber(List<Integer> arr, int k) {
return arr.stream()
.filter(e -> e == k)
.findFirst()
.map(e -> "YES")
.orElse("NO");
}
答案 4 :(得分:0)
public static String isListContainsNumber(List<Integer> nums, int n) {
return nums.stream().anyMatch(el -> el.equals(n)) ? "YES" : "NO";
}
答案 5 :(得分:0)
您的代码的主要问题是,即使在ArrayList中找到一个整数对象,将res设置为Yes后,它仍然继续迭代。因此,列表中可能存在其他值,而不是所需的数据类型,从而将res设置回No。 这里的解决方案是使用跳转语句(例如break),一旦遇到整数,该语句将终止循环过程。 希望对您有帮助!