Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在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 - Fatal编程技术网

在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";
    }