Java 随机生成器、字符串和数组

Java 随机生成器、字符串和数组,java,arrays,string,Java,Arrays,String,当我尝试运行下面的代码时,我得到 Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 7 at java.lang.String.charAt(String.java:658) at main.main(main.java:27) Java结果:1 我仍然需要添加一些得到最高值和最低值的东西。 程序必须通过字符串工作。我在下面使用的方法,

当我尝试运行下面的代码时,我得到

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 7
    at java.lang.String.charAt(String.java:658)
    at main.main(main.java:27)
Java结果:1

我仍然需要添加一些得到最高值和最低值的东西。 程序必须通过字符串工作。我在下面使用的方法, 不是从其他任何地方来的,我只是这样做的,但老师暗示使用循环。有什么建议吗?我想可能是因为数组中的垃圾

    int highValue,lowestValue,sum;
    int random;
    int check, otherCheck;
    int a = 0,b = 0,c = 0,d = 0,e = 0;
    String passingRandomIn;

    //Create a object that generates a random number 4-8
    Random ran = new Random();

    //Generates a random number between 4 and 8
    random = ran.nextInt(5)+4;

    //Sets the randomly generated number equal to check and other check
    check = random;
    otherCheck = random;

    //Declare an array of 5 characters[0-4] inclusive
    char[] myCharArray = new char[4];

    //To string  
    passingRandomIn = Integer.toString(random);   

    //Pass in the random numbers(character per character from the string)

         switch(check){
            case 8: myCharArray[4] = passingRandomIn.charAt(4);
            check--;
            case 7: myCharArray[3] = passingRandomIn.charAt(3);
            check--;    
            case 6: myCharArray[2] = passingRandomIn.charAt(2);
            check--;    
            case 5: myCharArray[1] = passingRandomIn.charAt(1);
            check--;    
            case 4: myCharArray[0] = passingRandomIn.charAt(0);
            break;
        }



        //Add the array of characters to an array of integers
        switch(otherCheck)
        {
            case 8: a = Character.getNumericValue(myCharArray[4]);

            case 7: b = Character.getNumericValue(myCharArray[3]);

            case 6: c = Character.getNumericValue(myCharArray[2]);

            case 5: d = Character.getNumericValue(myCharArray[1]);

            case 4: e = Character.getNumericValue(myCharArray[0]);
            break;
        }


        sum = a + b + c + d + e;
        System.out.println(sum);
   }
}

注释和代码不匹配。使用
新字符[4]
分配一个由四个字符组成的数组。您应该将其更改为
新字符[5]
。请注意,此处使用的数字是数组的大小,而不是您假设的最终索引。

此索引在您的数组中不存在,因为您只创建了一个4元素数组

案例8:myCharArray[4]=passingRandomIn.charAt(8)

random=ran.nextInt(5)+4
将始终生成一个数字,并且您正试图访问该字符串的
passingRandomIn.charAt(4)
,这是
StringIndexOutOfBoundsException的原因之一


如果要使用
random=ran.nextInt(5)+4然后您只能使用passingRandomIn.charAt(0),因为您的字符串长度将为1

案例8:myCharArray[4]=passingRandomIn.charAt(8)无法工作,因为
myCharArray
仅为4个元素(0-3)初始化
check=random;其他检查=随机提示:您可以直接使用
random
,而不是将其复制到其他两个变量。您想做什么?我建议您远离计算机,思考您试图解决的问题。你应该用英语写下解决这个问题所需的步骤。当您这样做时,根本不用担心Java语法。想想你该怎么解决这个问题,我很困惑。我应该如何输入你的例子?我想我真的不明白如何使用random类…而且我也不知道我在做什么。我写了sudo代码,但我现在真的要睡觉了。线程“main”java.lang.StringIndexOutOfBoundsException中的异常:字符串索引超出范围:1位于java.lang.String.charAt(String.java:658)位于main.main(main.java:31)java结果:1I更正了这两个错误。我更改了代码本身。在我的编译器中,我将数组改为“newchar[5]”,改为OP:array size开始于
1
。以下是相关的解释:
//Declare an array of 5 characters[0-4] inclusive
char[] myCharArray = new char[4];