- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在我的主要方法中,我有以下代码片段:
try {
select = scanner.nextInt();
} catch (InputMismatchException e) {
scanner.next(); //we should read erroneous
System.out.println("Error. Please input number.");
continue;
}
我安装 mvn clezan -> 转到目标目录。并开始使用应用程序实际上我输入了数字,但在控制台中我看到以下消息:
D:\freelance\Новая папка\myrepository\target>java -jar palindrome-artifactId-1.0
-SNAPSHOT.jar
Please type your name:
u1
Please select menu item
1 - suggest word, 2 - change user, 3 - my score, 4 - my word list, 5 - records,
6 - exit
1
Error. Please input number.
Please select menu item
1 - suggest word, 2 - change user, 3 - my score, 4 - my word list, 5 - records,
6 - exit
当我从 idea 调用应用程序时(选择主要方法)我没有看到这个问题。
请帮助解决我的问题。
附言
完整的主要方法:
public static void main(String[] args) {
System.out.println("Please type your name:");
try (Scanner scanner = new Scanner(System.in)) {
scanner.useDelimiter("\n");
String userName = scanner.next();
Game game = new Game(userName);
AtomicInteger atomicInteger = new AtomicInteger();
int select = 0;
do {
System.out.println("Please select menu item");
System.out.println("1 - suggest word, 2 - change user, 3 - my score, 4 - my word list, 5 - records, 6 - exit");
try {
select = scanner.nextInt();
} catch (InputMismatchException e) {
scanner.next(); //we should read erroneous
System.out.println("Error. Please input number.");
continue;
}
switch (select) {
case 1:
System.out.print("Word:");
String word = scanner.next();
if (game.suggestWord(word)) {
System.out.println("Accepted: your score - " + game.getCurrentUserScore());
} else {
System.out.println("Rejected: Word already exists in your list or it is not palindrome");
System.out.println("Your score - " + game.getCurrentUserScore());
}
break;
case 2:
System.out.print("Name:");
String name = scanner.next();
game.changeUser(name);
System.out.println("User changed successfully. Your score - " + game.getCurrentUserScore());
break;
case 3:
System.out.println("Your score - " + game.getCurrentUserScore());
break;
case 4:
System.out.println("Accepted words:");
game.getCurrentUserAcceptedWords().forEach(System.out::println);
break;
case 5:
atomicInteger.set(1);
game.getScores().forEach((k, v) -> System.out.println("#" + atomicInteger.getAndIncrement() + ". name: " + k + " , score: " + v));
break;
case 6:
System.out.println("Goodbye! thanks for the game");
break;
default:
System.out.println("You selected nonexistent menu item. Please try one more time.");
}
} while (select != 6);
}
}
最佳答案
您的问题可能是您的定界符。它正在寻找 \n
,但在 Windows 上,每一行都以 \r\n
结尾。所以你得到的用户名可能是 "u1\r"
虽然你没有看到 \r
(检查它的长度),并且你输入的数字被读作"1\r"
,不可解析为数字。
我想您的 IDE 中的模拟控制台将您按下的 return 解释为只是 \n
,这就是它在那里工作的原因。
因此,将分隔符从 \n
更改为 \r?\n
。分隔符是一个正则表达式,这意味着“可选的回车符,后跟换行符”。
关于java - InputMismatchException 当我从 cmd 运行 jar 时发生,如果从 idea 运行则不会发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32936538/
这个问题已经有答案了: Scanner double value - InputMismatchException (2 个回答) 已关闭2 年前。 为什么 Java 在使用 Scanner.next
我正在实现一个驱动程序来测试决策树,但遇到输入不匹配异常。我可以做什么来解决这个问题? 这是我的代码: import java.io.FileNotFoundException; /** * Loa
static long arrayMaxMin[]; public static void main(String[] args) { try{ Scanner in = new
这个问题在这里已经有了答案: Scanner is skipping nextLine() after using next() or nextFoo()? (23 个回答) 5年前关闭。 impor
简介 我在捕获 InputMismatchException 时遇到问题。当我搜索 InputMismatchException 时,我已经阅读了该网站上出现在第一页上的所有线程。我在阅读这些帖子时找
while(inputbook.hasNext()){ id = inputbook.nextInt(); name = inputbook.next(); year = in
我有这个代码: import java.util.Scanner; public class Maggiore3Valori { public static void main(String[
public static void main(String[] args) { try { Scanner scan = new Scanner(new Fi
当输入 55.5 作为第一个提示的答案时,我收到以下错误。输入 50 时我没有收到错误消息。 Exception in thread "main" java.util.InputMismatchExc
为什么我遇到了 inputMismatchException?当输入仅为整数时,结果会很好,但是当我使用双输入时,编译器会抛出 inputMismatchException。 public stati
我有一个任务: 5-8)(求最高分)编写一个程序,提示用户输入学生人数以及每个学生的姓名和分数,最后显示分数最高的学生的名字。 当我运行此代码并输入“john”等名称时,它运行良好,但当我尝试输入“J
我尝试以最简单的方式使用扫描仪: 代码: double gas, efficiency, distance, cost; Scanner scanner = new Scanner(System.in
我试图提示用户输入 x 坐标,但是当我输入十进制数(例如 2.1)作为输入时,这会导致问题。如何解决该问题? import java.util.Scanner; public cl
所以我一直在做一项任务,要求我们建立一个“患者经理”,根据紧急级别确定首先治疗的患者。我遇到的主要问题是,当用户在紧急栏中输入数字以外的内容时,它会使程序崩溃并给我一个 InputMismatchEx
public static void main(String[] args) throws FileNotFoundException { File file = new File("data
我写了下面这段Java代码。当运行它并输入任何值(定义的值,例如 latte,或任何其他值,例如 az 整数)时,我得到一个 InputMismatchException。 据我所知,此异常意味着输入
我希望用户输入一行文本,只要 x 不等于 numOfContestans 的值。当我运行代码时,我收到一个 InputMismatchException。有人知道如何解决这个错误吗? try {
这个问题已经有答案了: Scanner is skipping nextLine() after using next() or nextFoo()? (25 个回答) 已关闭 7 年前。 我有文本文
我无法找到错误的根源。我所做的就是从文件中读取文本 public static void main(String[] args) throws Exception { int T; S
我在将非整数输入整数字段时遇到问题。我只是采取预防措施,这样如果其他人使用/处理我的程序,他们就不会得到此 InputMismatchException。 当我在 input 变量中输入非数字字符时,
我是一名优秀的程序员,十分优秀!