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()读取各个扇区/群集?
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); } }
为什么read()会永远阻塞
运行在Windows上的Tomcat7
将WriteFile()是primefaces,如果进程被终止,但系统继续运行?
你的问题可能是你的分隔符。 它正在寻找一个n ,但在Windows上,每一行都以rn结尾。 所以你得到的用户名可能是"u1r"尽管你没有看到r (检查它的长度),而你输入的数字被读作"1r" ,这个数字不能被分析。
我猜你的IDE中的模拟控制台将你的按回车解释为n ,这就是为什么它在那里工作。
因此,将您的分隔符而不是n更改为r?n 。 分隔符是一个正则表达式,这将意味着“可选回车,后面是一个换行”。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。