微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

InputMismatchException在我从cmd运行jar时发生,如果从想法运行则不会发生

在我的主要方法我有以下代码片段:

try { select = scanner.nextInt(); } catch (InputMismatchException e) { scanner.next(); //we should read erroneous System.out.println("Error. Please input number."); continue; }

我让mvn clezan安装 – >转到目标目录。 并开始与应用程序其实我input数字,但在控制台我看到以下消息:

D:freelanceНовая папкаmyrepositorytarget>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,6 - exit

当我从理念(select主要方法调用应用程序时,我没有看到问题。

请帮忙解决我的问题。

如何使用Windows API WriteFile将ASCIIstring写入文件

如何find经常做io的过程?

如何在Windows中使用DeviceIoControl()读取各个扇区/群集?

Ruby文件写入窗口返回错误文件大小?

如何在Windows中使用文件带宽保留(预定文件IO)

PS

全主要方法

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,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); } }

衡量方法调用的I / O需求

删除一个目录,重新创build它,并添加文件

为什么read()会永远阻塞

运行在Windows上的Tomcat7

将WriteFile()是primefaces,如果进程被终止,但系统继续运行?

你的问题可能是你的分隔符。 它正在寻找一个n ,但在Windows上,每一行都以rn结尾。 所以你得到的用户名可能是"u1r"尽管你没有看到r (检查它的长度),而你输入的数字被读作"1r" ,这个数字不能被分析。

我猜你的IDE中的模拟控制台将你的按回车解释为n ,这就是为什么它在那里工作。

因此,将您的分隔符而不是n更改为r?n 。 分隔符是一个正则表达式,这将意味着“可选回车,后面是一个换行”。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐