如果用户错误,如何让系统退出?

时间:2016-01-27 14:38:58

标签: java arrays

如果用户猜错了系统打印错误。我希望每当用户出错时游戏结束,任何人都可以帮助我吗?我尝试使用系统退出,但是当猜测也正确时,它就会退出。我希望系统打印" Game Over"如果用户错了,那么下一张卡就会出现。

static Scanner console = new Scanner(System.in);
    public static void main(String[] args) {
        int[] cards = {6,4,2,7,5,9,11,1,12};

        System.out.println("predict next number by typing in 'higher' or 'lower'");

        for (int i = 1; i < cards.length; i++)
        {
            printHead(cards, i);
            System.out.println("");;
            String predict = console.next();
            if (predict.equals("higher"))
                checkHigher(cards, i-1, i);
            if (predict.equals("lower"))
                checkLower(cards, i-1, i);
        }
        printAll(cards);            
    }

    public static void printAll(int[] cards){
        for (int i =0; i< cards.length; i++)
            System.out.print(cards[i]+ " ");
    }

    public static void printHead(int[] cards, int upTo){
        for (int i =0; i< upTo; i++)
            System.out.print(cards[i]+ " ");
    }

    public static void checkHigher (int[] cards, int pos1, int pos2){
        if (cards[pos2]>cards[pos1])
             System.out.println ("Correct!");
        else 
             System.out.println("Wrong");
    }

    public static void checkLower (int[] cards, int pos1, int pos2){
        if (cards[pos2]<cards[pos1])
            System.out.println ("Correct!");
        else 
            System.out.println("Wrong");
    }
}

2 个答案:

答案 0 :(得分:1)

更简单的方法是使用

退出程序
System.exit(0);

另一种方法是从每张支票中返回boolean值并使用它来决定是否退出。

第三种方法是在用户错误时将main方法代码包装在try catchException中,然后退出。

使用代码段跟随三个备选方案:

直接退出支票

public static void checkLower (int[] cards, int pos1, int pos2){
    if (cards[pos2]<cards[pos1]) {
        System.out.println ("Correct!");
    } else {
        System.out.println("Wrong");
        System.exit(0);
    }
}

使用布尔返回值

public boolean void checkLower (int[] cards, int pos1, int pos2){
    if (cards[pos2]<cards[pos1]) {
        System.out.println ("Correct!");
        return true;
    } else {
        System.out.println("Wrong");
        return false;
    }
}

并在主

if (!checkLower(cards, i-1, i)) {
    System.exit(0);
}   

抛出异常

public boolean void checkLower (int[] cards, int pos1, int pos2) throws Exception {
    if (cards[pos2]<cards[pos1]) {
        System.out.println ("Correct!");
    } else {
        System.out.println("Wrong");
        throw new Exception("Wrong answer");
    }
}

并在主

public static void main(String[] args) {
    try {
        // Your code here
    } catch (Exception e) {
       System.out.println("There was an exception in the input");
    }
}

答案 1 :(得分:0)

只需在每个错误答案后输入:

System.exit(0);
  

我尝试使用系统退出,但是在猜测时就退出了   也是正确的。

那可能是因为你使用了else语句而不是其他代码块。忘了大括号?