-1

我尝试将逗号“,”之后的字符串转换为整数,例如输入 Sarah,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

现在您可以看到,在这种情况下,我们需要将第二个参数作为 last char + 1 的索引传递(因为它是独占的)。在这种情况下,它将是 char '9' 的索引,即 7。但是您传递的是长度 + 1 = 9,它大于字符串的大小并导致StringIndexOutOfBoundsException. 要更正,您需要传递值 8(最后一个字符的索引 + 1,因为它是独占的)。在这种情况下,这将是 = 长度。

因此,如果您在 substring 方法的参数中将长度 + 1 更改为长度,则它的填充是固定的。

于 2013-10-13T15:38:25.247 回答