2

整数を入力した後に文字列「s」を入力すると、このエラーが発生します。

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
    at java.lang.String.charAt(Unknown Source)
    at oneB.change(oneB.java:4)
    at oneB.main(oneB.java:26)

コードは次のとおりです。

import java.util.Scanner;
public class oneB {
    public static String change(int n, String s, String t) {

        if (s.charAt(0) == 'R') {
            return onetwo(s);
        }
        return s;
    }
    private static String onetwo(String one) {
        int c = one.indexOf('C');
        System.out.print(c);
        char[] columnarray = new char[one.length() - c - 1];
        for (int i = c + 1; i < one.length(); i++) {
            columnarray[i] = one.charAt(i);
        }
        int columnno = Integer.parseInt(new String(columnarray));
        System.out.print(columnno);
        return one;

    }
    public static void main(String[] args) {
        Scanner in = new Scanner(System. in );
        int n = in .nextInt();
        String s = in .nextLine();
        String t = in .nextLine();
        System.out.print(change(n, s, t));
    }

}
4

6 に答える 6

6

この呼び出しin.nextInt()はストリームに終了文字を残すため、次の への呼び出しin.nextLine()は空の文字列になります。次に、最初の文字を参照する関数に空の文字列を渡すと、例外が発生します。

于 2013-09-20T12:40:18.147 に答える
0

s空の String のようです""

于 2013-09-20T12:39:47.840 に答える