线程“主”中的异常java.lang.ArrayIndexOutOfBoundsException:5错误

时间:2018-11-14 00:17:52

标签: java

我需要打印重复数字如11或121的数字。但是,当我输入诸如22之类的输入时,这会出错。我不明白为什么会收到错误消息。知道如何解决此错误吗?

import java.util.Scanner;

public class IdenticalNumbers {

    public static void main(String[] args) 
    { 
        // Declare an object and initialize with 
        // predefined standard input object 
        Scanner sc = new Scanner(System.in); 

        int max = 0; 
        int[] arr = new int[5];
        int count =0;

        // Check if an int value is available 
        while (sc.hasNextInt()) 
        { 
            // Read an int value 
            int num = sc.nextInt(); 

            while (IsRepeating(num)){
                arr[count] = num;
                count += 1;
            } 

            if (num > max){
                max = num;
            } 


        } 
        System.out.println("Maximum integer is: " + max);
        System.out.println("Numbers with identical digits are: ");
        for(int i = 0; i < arr.length; i++) {   
            System.out.print(arr[i]);
        }  
        sc.close();
    } 

    public static boolean IsRepeating(int number)
    {
        String textual = "" + number;
        for (int i = 0; i < textual.length(); i++)
        {
            for (int j = i + 1; j < textual.length(); j++)
            {
                if (textual.charAt(i) == textual.charAt(j))
                    return true;
            }
        }

        return false;
    }
}
  

线程“主”中的异常java.lang.ArrayIndexOutOfBoundsException:5       在IdenticalNumbers.main(IdenticalNumbers.java:23)

2 个答案:

答案 0 :(得分:0)

原因是此行while (IsRepeating(num)){。 在循环内部,您无需更改num,因此,如果重复,它将始终如此。在count重复期间(即永远),该行循环(并增加num)。

您应该将其更改为if (IsRepeating(num)){

答案 1 :(得分:-1)

您的无用计数是个问题,您正在将数组初始化为5个元素的大小,并且在某些时候您给了count> 4。