繁体   English   中英

通过java中的system.exit(0)结束程序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM