计算整数数组元素的平方根时出现Arrays.asList问题

Tam*_*211 2 java arrays list square-root

我正在尝试编写一个代码,它获取一个int数组并检查数字的平方根是否在数组中,如果是,则会打印是,否则它将打印否.我无法弄清楚为什么我的代码不会一直返回.

例如,如果我的输入是:1 4 0 2 16 3

我的输出将是:是是是否否是否

这是我的代码:

import java.util.Arrays;

public class Assignment02Q04 {
    public static void main(String[] args) {
        int[] intlist = new int[args.length]; 
        for (int i=0; i < args.length; i++) {
            intlist[i] = Integer.parseInt(args[i]);
        }

        for (int number : intlist) {
            int sqrt = (int)(Math.sqrt(number)); 
            System.out.println(sqrt); 
            if (Arrays.asList(intlist).contains(sqrt)) {
                System.out.println("yes");
            } else {
                System.out.println("no"); 
            }
        }
   }            
}
Run Code Online (Sandbox Code Playgroud)

man*_*uti 10

Arrays.asList(intlist)返回一个数组列表int[].所述int[]阵列本身在这里被作为单个对象传递给该方法:

// the return is a list of arrays; arrays are objects in Java
List<int[]> asList = Arrays.asList(intlist);
Run Code Online (Sandbox Code Playgroud)

您可以通过使用Integer对象数组来解决此问题.

Integer[] intlist = new Integer[args.length]; 
for (int i=0; i < args.length; i++) {
    intlist[i] = Integer.parseInt(args[i]);
}
Run Code Online (Sandbox Code Playgroud)