gpt4 book ai didi

java - 为什么我在此代码中收到 StringIndexOutOfBoundsException?

转载 作者:行者123 更新时间:2023-12-01 19:02:55 28 4
gpt4 key购买 nike

我在 Java 中收到以下错误消息

Exception in thread "main" 

java.lang.StringIndexOutOfBoundsException: String index out of range: 0

这是我的代码 -

public static void main(String[] args) {

double gissade = 70;
int input;
java.util.Scanner in = new java.util.Scanner(System.in);

char spelaIgen = 'j';
// char input2;

int antal = 1;

while (spelaIgen == 'j') {
System.out.print("gissa ett number?");
Input = in.nextInt();

if (input < gissade) {
System.out.println("du har gissat för lågt försök igen");
antal++;
} else if (input > gissade) {
System.out.println("du har gissat för högt försök igen");

antal++;
}
if (input == gissade) {
System.out.println("du har gissat rätt");
System.out.println("efter " + antal + " försök");
}

System.out.println("vill du försöka igen? j/n");
char input2 = in.nextLine().charAt(0);
// String s1=in.nextLine();
// char c1=s1.charAt(0);

// if (input=='n');
// System.exit(0);

}
}

最佳答案

这是因为 nextInt() 不会消耗 newLine,因此当您尝试执行 readLine() 时,您会得到一个空字符串,并尝试执行

"".charAt(0);

它会抛出你的异常。

尝试在 nextInt() 之后添加额外的 nextLine()

一个好的做法是始终使用 nextLine(),然后解析获得的字符串。例如,要获取您的 int,您可以这样做:

String intInput;
do {
System.out.print("gissa ett nummer?");
intInput = in.nextLine();
while(!intInput.matches("\\d+"));
int number = Integer.parseInt(intInput);

这将重复,直到您输入有效的数字。

关于java - 为什么我在此代码中收到 StringIndexOutOfBoundsException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11541415/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com