布尔循环与JOptionPane Java相结合



我很乐意分享我的代码。但在我的大学里,代码被测试为"作弊"。

但这是我的简化代码。

public static String readin() {
    boolean error = false;
    do {
        string stringin;
        stringin = JOptionPane.showInputDialog(null, "Please enter a number");
        switch (stringin.length()) {
            case 0:
                JOptionPane.showMessageDialog(null, "Error Please repeat");
                error = true;
            case 1:
                return stringin;
        }
        return null;
    } while (error == true);
}

这个代码实际上是最简单的形式。我知道在这种情况下,将while设置为JOptionPane为空或其他什么会更明智。因为在我的代码中有12种不同的错误情况。我想使用布尔值。请注意:返回null永远不会出现在实际代码中。

但我真正的问题是:它运行得很好:此外:如果他重复循环,他就没有机会键入新的字符串。我该怎么做?

我也为我在英语方面的失误感到抱歉。

编辑:你所有的帮助解决了我的问题!非常感谢!我喜欢这个论坛!

尝试在case 1之前使用break(@Tuxxy_Thang(,并在while (error);之前删除return null;并放在之后。

public static String readin(){
    boolean error=false;
    do{ 
        string stringin;
        stringin=JOptionPane.showInputDialog(null,"Please enter a number");
        switch (stringin.length()){
            case 0: JOptionPane.showMessageDialog(null, "Error Please repeat");
                error=true;
                break;
            case 1: return stringin;
        } 
    } while (error);
    return null;
}

您不必检查while条件,因为您希望用户再次重复。只有当您有正确的值时才返回,否则请再次询问

 public static String readin() {
        while (true) {
            String stringin = JOptionPane.showInputDialog(null, "Please enter a number");
            switch (stringin.length()) {
                case 0:
                    JOptionPane.showMessageDialog(null, "Error Please repeat");
                    break;//is important in switch cases
                case 1:
                    return stringin;
            }
        }
    }

有两个原因:

  • 应将return null移到末尾
  • 第一种情况的末尾应该有一个break语句

我已经给出了修改后的代码,如果用户没有为JOptionPane:输入任何内容,它会重复循环

public static String readin() {
    boolean error = false;
    do {
        String stringin;
        stringin = JOptionPane.showInputDialog(null,
                "Please enter a number");
        switch (stringin.length()) {
        case 0:
            JOptionPane.showMessageDialog(null, "Error Please repeat");
            error = true;
            break;                       // **added**
        case 1:
            return stringin;
        }
    } while (error == true);
    return null; // Moved here. It will return if user entered more than 1 letter.
}

您正在使一项简单的工作变得困难,正确使用Java类,您将更轻松地完成

public static String readin()
{
    Boolean gettingNumber = true;
    String stringin = null;
    while (gettingNumber)
    {
        stringin = JOptionPane.showInputDialog(null, "Please enter a number");
        try
        {
            Integer number = Integer.parseInt(stringin);
            gettingNumber = false;
        }
        catch (NumberFormatException exception)
        {
            // no need to do anything
        }
    }
    System.out.println("returning [" + stringin + "]");
    return(stringin);
}

我添加这个是因为我推断你是在要求用户输入一个数字,但你的代码只允许用户输入任何一个字符,无论它是否是有效的数字,这就是你从原始方法返回的内容。

最新更新