无法在下面的代码中计算运行时错误

时间:2012-07-19 06:48:38

标签: java

嗨,我无法在下面的问题中找出运行时错误,请任何人都可以解决

import java.util.Scanner;

class Solution6 {
    public static void main(String[] args)
    {
        boolean condition = false;
        do
        {
            Scanner scanner = new Scanner(System.in);
            String value = scanner.nextLine();
            condition = value.equalsIgnoreCase("exit");
            if(!condition && value.contains(","))
            {
                calculate(value);
            }
        } while (!condition);
    }

    private static void calculate(String value)
    {
        final String[] event1 = value.split(",");
        int ss = 0;
        for ( int i = 0; i < event1[0].length(); ++i )
        {
            char c = event1[0].charAt( i );
            ss += (int) c;
        }
        int sd = 0;
        for ( int i = 0; i < event1[1].length(); ++i )
        {
            char c = event1[1].charAt( i );
            sd += (int) c;
        }

        System.out.println(ss-sd);
    }
}

1 个答案:

答案 0 :(得分:4)

问题是如果用户使用逗号(,)提供输入并且逗号是最后一个字符(或唯一字符),则event1最多只有1个元素: event1[0]。元素event1[1]将不存在,因此您获得ArrayIndexOutOfBoundsException

仅当输入如下:bgh,afsfgf,或甚至,时才会发生这种情况。

您可以通过检查数组event1包含的元素数来解决此问题。