程序在使用java.util.Arrays时不会运行 - 可能出现什么问题?

时间:2015-10-20 21:57:11

标签: java arrays boolean

" clearPets"中的代码出现了一堆错误。方法没有被注释掉。只要我删除该代码,程序就会以其他方式运行。

如何解决问题?我最近刚刚学会了创建和调用方法,这是我第一次使用java.util.Arrays

控制台中的错误是:

Exception in thread "main" java.lang.ArrayStoreException: java.lang.Boolean
at java.util.Arrays.fill(Unknown Source)
at rf.uhh.clearPets(uhh.java:34)
at rf.uhh.optionOne(uhh.java:39)
at rf.uhh.main(uhh.java:20)

这是我的代码:

public class uhh {

    public static void main(String[] args){

        System.out.println("Select a number");
        System.out.println("1");
        System.out.println("2");
        System.out.print("Choice: ");

        Scanner scnr = new Scanner(System.in);      
        String numberChoice = scnr.nextLine();

        if( "1".equals(numberChoice) ) {
            System.out.println("You chose 1");
            optionOne(new boolean[][] { {false}, {true} });
        }

        scnr.close();
    }   

    public static boolean[][] adoptPets( int cats, int dogs) {      
        boolean[][] pets = new boolean[cats][dogs];

        return pets ;
    }

    public static void clearPets( boolean[][]pets) {
        Arrays.fill(pets, false);
    }   

    public static void optionOne(boolean[][] center) {
        clearPets(center);

        boolean[][] dogFaceMan = adoptPets(10, 10);
        dogFaceMan[1][1] = true;                                        
    }
}

1 个答案:

答案 0 :(得分:3)

您正在将2D数组传递给需要一维数组的方法(Arrays.fill)。

试试这个:

public static void clearPets( boolean[][]pets) {
    for(int i = 0; i < pets.length; i++) {
        Arrays.fill(pets[i], false);
    } 
}