5 回答

TA貢獻1836條經驗 獲得超3個贊
您可以只使用來獲取是否在列表中的arr.contains()
布爾值。Integer
然后您可以將此值轉換為YES
or NO
(如果您確實需要它):
String yesNo = arr.contains(k) ? "YES" : "NO";

TA貢獻1784條經驗 獲得超8個贊
這將起作用:
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;
}
一旦找到整數,就必須停止循環,您可以使用break

TA貢獻1853條經驗 獲得超9個贊
使用流:
static String findNumber(List<Integer> arr, int k) {
return arr.stream()
.filter(e -> e == k)
.findFirst()
.map(e -> "YES")
.orElse("NO");
}

TA貢獻1859條經驗 獲得超6個贊
嘗試優化您的代碼....
方式 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";
}

TA貢獻1835條經驗 獲得超7個贊
你的代碼的主要問題是,即使它在 ArrayList 中找到了一個整數對象,在設置 res = Yes 之后,它仍然繼續迭代。因此,有可能列表中有其他值不是所需的數據類型,從而將 res 設置回否。這里的解決方案是使用跳轉語句,例如 break,它會在出現時立即終止循環過程。遇到整數。希望能幫助到你!
添加回答
舉報