当前位置: 首页 > 知识库问答 >
问题:

无法找到正确的方法来执行循环,直到输入有效

赏光霁
2023-03-14

我仍在学习java编程,请原谅我的知识不足。这可能是有史以来最简单的事情,但我一辈子都想不出更好的方法来循环checkTaskDescription方法,直到用户输入的描述低于字符限制。到目前为止,这是我能够做到的唯一方法,但它显然会重复输入对话框两次。

这是执行它的部分

 do{
     checkTaskDescription();
    }
       while (checkTaskDescription() == false);

这是正在执行的checkTaskDescription方法:

public boolean checkTaskDescription() {
        taskDesc = JOptionPane.showInputDialog(null, "Please enter a short description of the task");
        if (taskDesc.length() > 50) {
            JOptionPane.showMessageDialog(null, "Please enter a task description of less than 50 characters.", "ERROR",3);
            taskDesc = JOptionPane.showInputDialog(null, "Please enter a short description of the task");
            return false;
        }
        JOptionPane.showMessageDialog(null, "Task successfully captured.");
        return true;
    }

共有3个答案

祁嘉瑞
2023-03-14

下面是使用while循环执行相同操作的另一种方法

java prettyprint-override">boolean flag = false; 
while(!flag){
  flag = checkTaskDescription();
}

主要的想法是你总是需要检查你从上一次通话中返回了什么。如果checkTaskDescription()返回false,则再次调用,否则退出循环

景轶
2023-03-14

如果你这样做会容易得多

public String getTaskDescription() {
    String taskDescription = "";
    do {
        taskDescription = JOptionPane.showInputDialog(null, "Please enter a short description of the task");
    }
    while (taskDescription.length() > 50);

    return taskDescription;
}

当你设计你的方法时,试着让它们尽可能独立。现在,如果输入无效,则返回一个标志并依靠调用方方法再次调用它。

许淳
2023-03-14

您需要使用方法调用的结果。


boolean ready = false;

do{

    ready = checkTaskDescription();

} while ( ! ready );

将进入do块,将ready分配给checkTaskDescription()的返回值,然后检查它是否为false。如果为false,它将继续循环,直到为true。

您的check TaskDescription也已损坏。如果您第一次失败,它将再次显示对话框,然后始终返回false。

public boolean checkTaskDescription() {
        taskDesc = JOptionPane.showInputDialog(null, "Please enter a short description of the task");
        if (taskDesc.length() > 50) {
            JOptionPane.showMessageDialog(null, "Please enter a task description of less than 50 characters.");
            return false;
        }
        JOptionPane.showMessageDialog(null, "Task successfully captured.");
        return true;
    }

我更新了该方法,以便在输入失败时“工作”,它将显示错误消息,然后循环并再次显示对话框。这就是为什么您应该验证对话框中的数据,而不是在循环中打开对话框。

 类似资料:
  • 我正在创建一个Java项目,使用do-while循环从用户那里获取一个介于5到15之间的数字。在此之后,我将使用用户输入的数字创建一个正方形和三角形。 我现在只能重复我的问题。在我运行程序后,它运行良好,直到我输入一个数字,第二次提示用户输入一个数字。如果号码无效或无效,则不会打印。 我试着移动第二个“输入数字...”里面的do-loop,但那只是印有“对不起,无效”的提示。我对while循环中的

  • 尝试创建自动订阅新闻的脚本,但是遇到了一个问题,< code>selenium找不到电子邮件输入和提交按钮。每次获取< code > selenium . common . exceptions . nosuchelementexception:

  • 我试图使一个计算器与一定的输入,是输入像+5或/10 2。当我编译并运行它时,我会得到以下错误: 线程“main”java.util.NoSuchelementException 在java.util.scanner.throwfor(Scanner.java:907) 在java.util.scanner.next(Scanner.java:1416) 在calc.main(calc.java:

  • 本文向大家介绍C#中for循环、while循环循环执行的方法,包括了C#中for循环、while循环循环执行的方法的使用技巧和注意事项,需要的朋友参考一下 先给大家介绍下C#中的循环执行for循环 在这一节练习中,我们向大家介绍一下C#中的另一种重要的循环语句,for循环。 表达式1:一般为赋值表达式,给控制变量赋初值; 表达式2:逻辑表达式,循环控制条件;当条件为真时,循环执行循环体中的语句。

  • 问题内容: 我正在尝试制作一个订购咖啡的应用程序。(我真的很陌生。) 我的应用程序运行良好,直到出现两个错误。现在,它可以在设备中运行,但是当您尝试触摸按钮时,它将停止。 代码是: XML代码: 终端中的第一个错误: 和主要错误: 问题答案: 改变这条线 对此: 要么: