Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
螺纹“中的异常;主&x201D;java.lang.ArrayIndexOutOfBoundsException:5错误_Java - Fatal编程技术网

螺纹“中的异常;主&x201D;java.lang.ArrayIndexOutOfBoundsException:5错误

螺纹“中的异常;主&x201D;java.lang.ArrayIndexOutOfBoundsException:5错误,java,Java,我需要打印重复数字如11或121的数字。但是,当我给出一些输入,如22时,它会给出一个错误。我不明白为什么我会收到错误信息。你知道我该如何修复这个错误吗 import java.util.Scanner; public class IdenticalNumbers { public static void main(String[] args) { // Declare an object and initialize with // p

我需要打印重复数字如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;
    }
}
import java.util.Scanner;
公共类标识号{
公共静态void main(字符串[]args)
{ 
//声明一个对象并用
//预定义的标准输入对象
扫描仪sc=新的扫描仪(System.in);
int max=0;
int[]arr=新的int[5];
整数计数=0;
//检查int值是否可用
while(sc.hasnetint())
{ 
//读取一个int值
int num=sc.nextInt();
while(IsRepeating(num)){
arr[count]=num;
计数+=1;
} 
如果(数值>最大值){
max=num;
} 
} 
System.out.println(“最大整数为:“+max”);
System.out.println(“具有相同数字的数字为:”);
对于(int i=0;i
线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:5 位于IdenticalNumbers.main(IdenticalNumbers.java:23)


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

原因在于这一行
while(IsRepeating(num)){
。 在循环中,您不会更改
num
,因此如果它是重复的,它将始终是重复的。这一行在
num
重复时循环(并增加
count


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

这应该是一个注释而不是回答OP问的是“知道如何修复此错误吗?”,我指出了这段代码的问题,而不是编译它。OP应该知道如果他有编译器,他已经得到了错误。哇!这解决了我的问题,但同时,如果我输入11作为输入,我得到了11000000000的结果。你知道我如何使其他零消失吗?我是说java为其余的0创建了零我不想在打印我的数组时看到它们。有什么解决方案吗?如果你不想看到它们,就用
If(arr[I]>0)System.out.println(arr[I])之类的东西过滤掉它们;
您愿意接受多少个数字作为输入?由于while循环
while(sc.hasNextInt())
它将始终等待输入,因此您的程序将继续运行,并且永远不会到达打印结果的点