Я не могу ввести значения выше 9 в это - PullRequest
0 голосов
/ 25 февраля 2019

Я думаю, что это прекрасно работает, когда я вводю значения меньше 9. Но всякий раз, когда я ввожу значение больше 9, программа выдает исключение ArrayIndexOutOfBoundsException.Я не могу понять, что вызывает эту проблему.Может кто-нибудь просто объяснить мне эту проблему и как ее решить?

import java.util.Scanner;
public class Main{
public static void main(String[] args) {
    int[][] twoDAarray = new int[3][3];

    Scanner input = new Scanner(System.in);
    System.out.println("Enter values: ");
    for(int i=0; i<3; i++){
        for(int j=0; j<3; j++){
            twoDAarray[i][j] = input.nextInt();
        }
    }

    System.out.println(checkLoShuSquare( twoDAarray ));
}

public static boolean checkLoShuSquare( int[][] twoDAarray ) {
    boolean[] isUnique = new boolean[twoDAarray.length*twoDAarray[0].length+1];
    for ( int i = 0; i < twoDAarray.length; i++ ) {
       for ( int j = 0; j < twoDAarray[0].length; j++ ) {
         if ( isUnique[twoDAarray[i][j]] ){
            return false;
         }
         isUnique[twoDAarray[i][j]] = true;
       }
    }

    int[] lessThan9 = new int[twoDAarray.length*twoDAarray[0].length+1];
    for ( int i = 0; i < twoDAarray.length; i++ ) {
        for ( int j = 0; j < twoDAarray[0].length; j++ ) {
            if (lessThan9[twoDAarray[i][j]] <= 9){
                return true;
            }
    }
  }
    return true;
 }
}

1 Ответ

0 голосов
/ 25 февраля 2019

Массив isUnique имеет размер 10, вместо этого его размер должен соответствовать наибольшему целому числу, которое было вставлено пользователем.

Конечно, есть более эффективные способы проверки на наличие дублирующихся чисел произвольного размера., как с использованием Set<Integer>.

...