[英]ending a programme through system.exit(0) in java
这是我无法获得答案的先前问题的延续。 问题是当我尝试使用带有switch语句和“ End”关键字以及大小写的System.exit(0)方法结束程序时,代码不再按预期运行,现在仅每第二个整数输入就被读取电脑。 这是我不再有效的方法:
public static int[] ourGuess() {
int[] guessed = new int[4];
Scanner scan = new Scanner(System.in);
System.out.println("Take your guess:");
switch (scan.nextLine()) {
case "End":
System.exit(0);
break;
}
guess = scan.nextInt();
int mod = 10;
int div = 1;
for (int i = 3; i >= 0; i--) {
int num = (guess % mod) / div;
guessed[i] = num;
div = div * 10;
mod = mod * 10;
}
return guessed;
}
该类是mastermind游戏的Java实现。 感谢您的所有帮助!
您正在从Scanner
读取两个值。
首先,您使用scan.nextLine()
读取一个值,然后丢弃该值,然后使用scan.nextInt()
读取另一个值。
您需要保存读取的值并重新使用它:
final String line = scan.nextLine();
if(line.equals("End")) {
return guessed;
}
final int guessed = Integer.parseInt(line);
您也不应该调用System.exit
。
首先,对于一种情况,您不应使用switch语句。 另外,如果读取的行不是“ End”而是int,则跳过该行。 尝试:
String next = scan.nextLine();
if(next.equalsIgnoreCase("End")) System.exit(0);
然后检查下一个是否是猜测的实际整数,否则请读取下一个整数。
通过调用nextLine()
和nextInt()
,您正在从流中读取两件事。 而是缓存nextLine()
的值:
String line = scan.nextLine();
switch (line) { ...}
然后以以下方式使用它:
guess = Integer.parseInt(line);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.