-1

入力サラ、49出力49など、コンマ「、」の後の文字列を整数に変換しようとしましたが、出力を整数として欲しい

NameandGrade = scan.nextLine();

length = NameandGrade.length();

coma=NameandGrade.indexOf(',');

String StrMarks=NameandGrade.substring(coma+1,length+1);

int Intmarks = Integer.parseInt(StrMarks);

System.out.println(marks);

私はそのコードを書きましたが、実行後に表示されます

範囲外の文字列インデックス: 9

4

2 に答える 2

1

どうしてこうしなかったの?

String[] splitted = NameandGrade.split(",");
String name = splitted[0];
int grade = Integer.parseInt(splitted[1]);
于 2013-10-13T15:14:01.673 に答える
0

変数のコンマと長さの値を見てみましょう

comma = 5
length = 8

また、メソッド部分文字列の署名は

String substring(int beginIndex,int endIndex)

ここで、パラメータ パラメータ:

beginIndex - the beginning index, inclusive.
endIndex - the ending index, exclusive.

また、この場合に何が起こっているのかをよりよく理解するために、文字列の文字に番号を付けてみましょう

 Sarah,49
 01234567

ご覧のとおり、この場合は 2 番目のパラメーターを最後の char + 1 のインデックスとして渡す必要があります (これは排他的であるため)。この場合、これは char '9' のインデックスで、7 になります。しかし、渡されているのは長さ + 1 = 9 で、これは文字列のサイズよりも大きく、結果はStringIndexOutOfBoundsException. 修正するには、値 8 (最後の文字のインデックス + 1、排他的であるため) を渡す必要があります。この場合は = 長さになります。

したがって、部分文字列メソッドの引数で長さ + 1 を長さに変更すると、修正されます。

于 2013-10-13T15:38:25.247 に答える