当用户输入错误答案三次时如何终止程序

时间:2018-11-24 23:26:47

标签: java command-line

我正在尝试要求用户输入0到9之间的数字。如果他们输入正确的号码,程序将终止,但如果没有输入,他们有三次机会获得正确的号码,直到要求他们再次重新运行该程序。

到目前为止,这是我的代码:

import java.util.Scanner;

public class DoWhileLoop
{
    public static void main(String[] args)
    {
        int a = 1;
        Scanner keyboard = new Scanner(System.in);


        do{
            a++;
            System.out.println("Please enter a number 0-9");
            int value = keyboard.nextInt();


            if(value == 1)
            {
                System.out.println("one");
            }
            else if(value == 2)
            {
                System.out.println("two");
            }
            else if(value == 3)
            {
                System.out.println("three");
            }
            else if(value == 4)
            {
                System.out.println("four");
            }
            else if(value == 5)
            {
                System.out.println("five");
            }
            else if(value == 6)
            {
                System.out.println("six");
            }
            else if(value == 7)
            {
                System.out.println("seven");
            }
            else if(value == 8)
            {
                System.out.println("eight");
            }
            else if(value == 9)
            {
                System.out.println("nine");
            }
            if (value <= 9) {
                break;
            }
        }while (a <= 3);
            System.out.println("Please rerun the program and enter a number 0-9");
    }
}

如果您对如何做有任何建议,将不胜感激。

4 个答案:

答案 0 :(得分:0)

您可以改用如下代码:

if (condition) {
    return value1
} else {
    return value2
}
// No return value needed here

答案 1 :(得分:0)

您的尝试看起来非常接近您想要实现的目标。

您当前具有以下代码,如果用户输入的数字小于或等于9,则该代码将导致程序终止

if (value <= 9) {
            break;
        }

为了严格满足以下要求:如果用户输入0到9之间的数字,程序将终止,也许此检查应类似于:

if (value >=0 && value <=9) {
            break;
}

在Java中,可以在if语句中使用&&运算符,以确保if语句中的代码仅在&&两侧的两个条件都为true时才执行。

为什么还不添加一条打印语句,提示用户输入了正确的答案?例如

if (value >=0 && value <=9) {
            System.out.println("Correct");
            break;
}

就您当前的代码而言,如果用户输入大于9的任何数字超过3次,则该代码已经退出,这很好。我认为,如果您修复了我上面提到的if语句,那么您应该更接近预期的行为。

最后要注意的是,程序将调用此行

            System.out.println("Please rerun the program and enter a number 0-9");

无论do-while循环如何退出。如果您希望程序在用户输入正确的猜测时完全终止,而无需打印此行,则可以添加return语句而不是break:

    if (value >=0 && value <=9) {
            System.out.println("Correct");
            return;
}

这将导致main方法“返回”,而不是继续执行任何其他指令,这将导致程序终止

答案 2 :(得分:0)

以下是一些阅读材料:https://docs.oracle.com/javase/tutorial/java/javaOO/returnvalue.html

return语句用于从方法中返回值。

例如,如果您要创建能够将两个数字相除的类号,则可以返回函数的resultat并像在System.out.println中那样使用它。

public class Number
{

public static void main(String[] args)
{
    System.out.println(divide(4, 5));
    System.out.println(divide(4,0));


}

    public static float divide(int a, int b)
    {
        if(b == 0) {
          throw new IllegalArgumentException("Error you can't divide by zero !");
        }
        return a / b;

  }

}

对于抛出来说,它有点复杂,在Java中可能会发生异常,例如您不能将其除以0。在这种情况下,抛出异常,在这种情况下为IllegalargumentException。

最后,方法main的名称很好,因为它是程序的主要方法,是要执行的第一个方法,如果程序没有错误,则是最后一个,这意味着如果您退出此方法,您将退出程序。 / p>

答案 3 :(得分:0)

您必须在代码末尾将“ a ++”移动到else语句中。像这样:

import java.util.Scanner;

public class DoWhileLoop {
public static void main(String[] args) {
    int a = 0;
    Scanner keyboard = new Scanner(System.in);
    do{
        System.out.println("Please enter a number 0-9");
        int value = keyboard.nextInt();

        if(value == 1){System.out.println("one");}
        else if(value == 2) {System.out.println("two");}
        else if(value == 3) {System.out.println("three");}
        else if(value == 4){System.out.println("four");}
        else if(value == 5){System.out.println("five");}
        else if(value == 6){System.out.println("six");}
        else if(value == 7){System.out.println("seven");}
        else if(value == 8){System.out.println("eight");}
        else if(value == 9){System.out.println("nine");}
        if (value <= 9) {break;}
        else {a++;}
        }
    while (a < 3);
    if (a == 3) {System.out.println("You've used all your attemps.");}        
}
}