我需要打印重复数字如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)
答案 0 :(得分:0)
原因是此行while (IsRepeating(num)){
。
在循环内部,您无需更改num
,因此,如果重复,它将始终如此。在count
重复期间(即永远),该行循环(并增加num
)。
您应该将其更改为if (IsRepeating(num)){
答案 1 :(得分:-1)
您的无用计数是个问题,您正在将数组初始化为5个元素的大小,并且在某些时候您给了count> 4。