在java中搜索arraylist中的整数 公共类FindNumber{ 静态字符串findNumber(列表arr,int k){ String res=“YES”; //无法识别这部分代码的问题 对于(int i=0;i“是”) .orElse(“否”); } 公共静态字符串isListContainsNumber(列表nums,int n){ 返回nums.stream().anyMatch(el->el.equals(n))?“是”:“否”; }
即使列表中存在整数,上述代码也会返回“否”作为答案。这将起作用:在java中搜索arraylist中的整数 公共类FindNumber{ 静态字符串findNumber(列表arr,int k){ String res=“YES”; //无法识别这部分代码的问题 对于(int i=0;i“是”) .orElse(“否”); } 公共静态字符串isListContainsNumber(列表nums,int n){ 返回nums.stream().anyMatch(el->el.equals(n))?“是”:“否”; },java,Java,即使列表中存在整数,上述代码也会返回“否”作为答案。这将起作用: 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 (in
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;
}
}
静态字符串findNumber(列表arr,int k){
String res=“YES”;
对于(int i=0;i
一旦找到整数,就必须停止循环,您可以使用
中断尝试优化代码
方式1(用于每个回路):
静态字符串findNumber(列表arr,int k){
for(整数:arr){
if(整数==k){
返回“是”;
}
}
返回“否”;
}
另一种方法是(使用三元运算符):
静态字符串findNumber(列表arr,int k){
返回包含(k)?“是”:“否”;
}
您可以使用arr.contains()
获取一个布尔值,该值表示Integer
是否在列表中。然后,您可以将此值转换为是
或否
(如果确实需要):
String yesNo=arr.contains(k)?“是”:“否”;
使用流:
static String findNumber(List<Integer> arr, int k) {
return arr.contains(k) ? "YES" : "NO";
}
静态字符串findNumber(列表arr,int k){
返回arr.stream()
.过滤器(e->e==k)
.findFirst()
.地图(e->“是”)
.orElse(“否”);
}
公共静态字符串isListContainsNumber(列表nums,int n){
返回nums.stream().anyMatch(el->el.equals(n))?“是”:“否”;
}
代码的主要问题是,即使它在ArrayList中找到整数对象,在设置res=Yes后,它仍然会继续迭代。因此,在所需数据类型的列表中可能存在其他值,从而将res设置回No。
这里的解决方案是使用诸如break之类的跳转语句,一旦遇到整数,它就会终止循环进程。
希望有帮助 使用=
比较整数对象仅在值介于-128
和127
之间时有效,所有其他值都需要使用.equals()
方法进行比较,而您的代码有几处错误。如果希望为true或false,请返回布尔值(例如)@JonK整数对象之间没有比较。比较是在Integer对象和int基元之间进行的。在这种情况下,Integer对象是自动取消装箱的。@u strOX绝对正确,这就是为什么它是注释而不是答案。刚开始的时候很容易被咬到,所以我觉得还是值得一提。@JonK这很有道理。如果你想进行这样的修复,你应该用if(find)return“YES”替换整个if-else;或者,将returntype更改为boolean并说:return arr.contains(k);谢谢:)。。跳转语句是我错过的东西。在返回“是”后添加“中断”解决了问题。
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";
}
static String findNumber(List<Integer> arr, int k) {
return arr.stream()
.filter(e -> e == k)
.findFirst()
.map(e -> "YES")
.orElse("NO");
}
public static String isListContainsNumber(List<Integer> nums, int n) {
return nums.stream().anyMatch(el -> el.equals(n)) ? "YES" : "NO";
}