正在线程中获取异常";“主要”;java.util.InputMismatchException
我尝试一个接一个地获取输入,然后尝试对它们执行操作。遵循我的代码正在线程中获取异常";“主要”;java.util.InputMismatchException,java,inputmismatchexception,Java,Inputmismatchexception,我尝试一个接一个地获取输入,然后尝试对它们执行操作。遵循我的代码 import java.util.Scanner; public class PlayerRoster { public static void main(String[] args) { Scanner scnr = new Scanner(System.in); final int LENGTH = 5; final cha
import java.util.Scanner;
public class PlayerRoster {
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
final int LENGTH = 5;
final char quit = 'q';
char uin = 'z';
int jersey = 0;
int chng = 0;
int[] number = new int[LENGTH];
int[] rating = new int[LENGTH];
for(int i = 0; i < LENGTH; i++){
System.out.println("Enter player "+(i+1)+"'s jersey number:");
number[i] = scnr.nextInt();
System.out.println("Enter player "+(i+1)+"'s rating:\n");
rating[i] = scnr.nextInt();
}
for(int i = 0; i < LENGTH; i++){
if (i == 0)
System.out.println("ROSTER");
System.out.println("Player " + (i + 1) + " -- Jersey number: " + (number[i]) + ", Rating: " + (rating[i]));
if (i == 4)
System.out.println("");
}
while (uin != quit){
System.out.println("MENU");
System.out.println("u - Update player rating");
System.out.println("a - Output players above a rating");
System.out.println("r - Replace player");
System.out.println("o - Output roster");
System.out.println("q - Quit\n");
System.out.println("Choose an option:");
uin = scnr.next().charAt(0);
if (uin == 'o')
for(int i = 0; i < LENGTH; i++){
if (i == 0)
System.out.println("ROSTER");
System.out.println("Player " + (i + 1) + " -- Jersey number: " + (number[i]) + ", Rating: " + (rating[i]));
if (i == 4)
System.out.println("");
}
if (uin == 'u')
System.out.println("Enter a jersey number: ");
chng = scnr.nextInt();
}
}
}
问题是代码块
if (uin == 'u')
System.out.println("Enter a jersey number: ");
chng = scnr.nextInt();
由于您只希望在用户输入为“u”时使用球衣号码,因此chng=scnr.nextInt();应该在if块内。
在您的情况下,即使用户以“q”的形式提供输入,它仍然期望用户提供更多的输入,在这种情况下,您可能只是在给您输入不匹配异常提供空白
要修复它,请将代码更新为
if (uin == 'u')
{
System.out.println("Enter a jersey number: ");
chng = scnr.nextInt();
}
因此,现在如果您将输入设为“q”,那么您的循环将停止执行预期的输出。它发生在哪一行?这可能是因为您混淆了nextInt()和next()调用。nextInt()不使用enter@Stultuske刚刚添加了代码,忘记了。@Stultuske chng=scnr.nextInt();你是说,你添加了stacktrace(或其中的一部分)?你知道那不是代码,对吧?@Stultuske是的,我知道那不是代码。我之所以这么说,是因为我不得不沮丧地将其缩进为代码来发布该死的stacktrace。在将代码更改为此之后,我不再有错误。谢谢!我不知道我曾经需要用括号括起if语句。如果希望if块中包含多个语句,则需要在if语句中添加括号,否则它是可选的。@holdthemayo7您在
System.out.println(“Player”)的行中遇到了相同的问题
。它不会导致异常,它只会打印这一行。
if (uin == 'u')
{
System.out.println("Enter a jersey number: ");
chng = scnr.nextInt();
}