随机生成器,字符串和数组

时间:2014-10-09 04:19:30

标签: 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

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

    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);
   }
}

3 个答案:

答案 0 :(得分:2)

random = ran.nextInt(5)+4;将始终生成一位数字,并且您尝试访问该字符串的passingRandomIn.charAt(4),这是StringIndexOutOfBoundsException

的原因

如果你想使用random = ran.nextInt(5)+4;,那么你只能使用passRandomIn.charAt(0),因为你的字符串长度将为1

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

由于您只创建了一个4元素数组

,因此该索引不存在于您的数组中

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