如果用户输入的内容无效,我需要帮助循环此程序

时间:2016-04-11 15:46:32

标签: java loops while-loop

我不知道如何循环这个我编码的简单程序,我真的需要帮助。

这是我的第一堂课:

public class project{
    public static void main(String[] args){
        dank dankObject = new dank();

        dankObject.design();
        dankObject.catchError();

    }
}

这是我的第二堂课:

import java.util.Scanner;

public class dank{
    public void design(){
        System.out.println("---------------------------------");
        System.out.println("| Main Checmicals in Substances |");
        System.out.println("---------------------------------");
        System.out.println("| LSD | SHROOMS | WEED |");
        System.out.println("------------------------");
        System.out.print("\nWhich substance would you like to learn about?\nInput: ");
    }

    public void catchError(){
        Scanner input = new Scanner(System.in);
        String choice = input.nextLine();
        try{
            if(choice.equalsIgnoreCase("LSD"))
            {
                System.out.println("\nMain Chemical: Lysergic Acid Diethylamide");
                System.out.println("Fatal: NO");
            }
            else if(choice.equalsIgnoreCase("SHROOMS"))
            {
                System.out.println("\nMain Chemical: Psilocybin");
                System.out.println("Fatal: NO");
            }
            else if(choice.equalsIgnoreCase("WEED"))
            {
                System.out.println("\nMain Chemical: THC");
                System.out.println("Fatal: HELL NO");
            }
            else
            {
                System.out.println("\nInvalid Input!");
            }
        }

        catch(Exception e)
        {
            System.out.println("\nInvalid Input!");
        }

    }
}

基本上我只是希望程序在用户输入无效输入时重新启动。我是否使用while循环执行此操作?我刚刚开始学习java。

2 个答案:

答案 0 :(得分:0)

我假设你想在输入无效时循环。

在这种情况下,请将catchError方法更改为返回boolean而不是void,并返回输入是否有效,如下:

public boolean catchError(){
    Scanner input = new Scanner(System.in);
    String choice = input.nextLine();
    try{
        if(choice.equalsIgnoreCase("LSD"))
        {
            System.out.println("\nMain Chemical: Lysergic Acid Diethylamide");
            System.out.println("Fatal: NO");
        }
        else if(choice.equalsIgnoreCase("SHROOMS"))
        {
            System.out.println("\nMain Chemical: Psilocybin");
            System.out.println("Fatal: NO");
        }
        else if(choice.equalsIgnoreCase("WEED"))
        {
            System.out.println("\nMain Chemical: THC");
            System.out.println("Fatal: HELL NO");
        }
        else
        {
            System.out.println("\nInvalid Input!");
            return false;
        }
    }

    catch(Exception e)
    {
        System.out.println("\nInvalid Input!");
        return false;
    }
    return true;
}

然后在返回值为false时循环:

boolean flag = true;
while (flag) {
    dankObject.design();
    flag = dankObject.catchError();
}

答案 1 :(得分:0)

移动两行:

Scanner input = new Scanner(System.in);
String choice = input.nextLine();

进入design()方法的最后。然后调用catchError(choice)方法并将选择传递给它。将行design()放在捕获体的末尾。最后,从你的main()中取出catchError()方法。

这只是一个建议,如果你愿意,你可以做任何看起来像这样的事情。我也没有使用布尔值,所以如果你想这样做,你应该采取其他一些建议。

import java.util.Scanner;

public class dank{
    public void design(){
        System.out.println("---------------------------------");
        System.out.println("| Main Checmicals in Substances |");
        System.out.println("---------------------------------");
        System.out.println("| LSD | SHROOMS | WEED |");
        System.out.println("------------------------");
        System.out.print("\nWhich substance would you like to learn about?\nInput: ");
        Scanner input = new Scanner(System.in);
        String choice = input.nextLine();
        catchError(choice);
    }

    public void catchError(String choice){
        try{
            if(choice.equalsIgnoreCase("LSD"))
            {
                System.out.println("\nMain Chemical: Lysergic Acid Diethylamide");
                System.out.println("Fatal: NO");
            }
            else if(choice.equalsIgnoreCase("SHROOMS"))
            {
                System.out.println("\nMain Chemical: Psilocybin");
                System.out.println("Fatal: NO");
            }
            else if(choice.equalsIgnoreCase("WEED"))
            {
                System.out.println("\nMain Chemical: THC");
                System.out.println("Fatal: HELL NO");
            }
            else
            {
                System.out.println("\nInvalid Input!");
                design();
            }
        }

        catch(Exception e)
        {
            System.out.println("\nInvalid Input!");
            design();
        }

    }
}