gpt4 book ai didi

java - 从用户输入返回 "int"

转载 作者:行者123 更新时间:2023-11-30 06:17:36 26 4
gpt4 key购买 nike

我正在java程序中开发一个骰子游戏(特别是jGRASP),它正在踢我的 jar 头。我需要从用户输入中返回名称和每手骰子的数量。这是迄今为止我的(相关)代码:

import java.util.*; 

public class DiceGame {
public static Scanner input = new Scanner(System.in);

public static void main(String[] args) {
System.out.println("Welcom to the Lab 7 Dice Game.");
name();
dice();
}
public static String name(){
System.out.print("What is you name? ");
String name = input.next();
return name;
}
public static int dice(){
System.out.print("How many rolls per round? ");
int dice = input.nextInt();
return dice;
}
}

该方法给出我的输入行,并要求用户输入字符串作为名称。这工作得很好,它会按预期打印出来。但是当它继续调用 dice 方法时,我在“dice();”处收到“InputMismatchException”在 main 和“int dice = input.nextInt();”处在我的骰子方法中。真的,我只是在寻找一个解释。我在我现有的教科书上查了它,并在其他地方查了它,但我找不到解释。

最佳答案

从你的问题中我可以看出,这是因为 Scanner 不直观。您似乎是在说它不等待第二次输入。如果情况并非如此,则此答案毫无帮助。

next() 方法接受下一个空格分隔的字符串,这意味着如果您键入
我想要所有这些词
它将接收I,缓冲区位于want all those Words前面。因此,当您调用 nextInt() 时,它会接受下一个输入,即 want,但它不是 int。

因此,请使用 nextLine() 而不是 next() ,除非您确实只想要下一个单词,并在之后调用 nextLine() nextInt() 强制 Scanner 使用换行符。

import java.util.*; 

public class DiceGame {
public static Scanner input = new Scanner(System.in);

public static void main(String[] args) {
System.out.println("Welcome to the Lab 7 Dice Game.");
name();
dice();
}
public static String name(){
System.out.print("What is your name? ");
String name = input.nextLine();
return name;
}
public static int dice(){
System.out.print("How many rolls per round? ");
int dice = input.nextInt();
input.nextLine();
return dice;
}
}

关于java - 从用户输入返回 "int",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48871542/

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