为了账号安全,请及时绑定邮箱和手机立即绑定

线程“主”java.lang.ArrayIndexOutOfBoundsException

线程“主”java.lang.ArrayIndexOutOfBoundsException

侃侃尔雅 2022-01-19 17:08:04
我需要打印具有重复数字(如 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;    }}线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException: 5 在 IdenticalNumbers.main(IdenticalNumbers.java:23)
查看完整描述

2 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

原因在于这条线while (IsRepeating(num)){。在循环内部,您不会更改,num所以如果它是重复的,它将永远是。此行循环(并增加count) whilenum重复,即 while 永远。

你应该把它改成 if (IsRepeating(num)){


查看完整回答
反对 回复 2022-01-19
?
波斯汪

TA贡献1811条经验 获得超4个赞

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


查看完整回答
反对 回复 2022-01-19
  • 2 回答
  • 0 关注
  • 278 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号