java - 当试图循环回到开头时陷入无限循环。 java

标签 java swing loops infinite-loop joptionpane

如果用户输入无效的大小,我试图让代码循环。但它陷入了无限循环。我尝试将“while”添加到底部并添加“do”来启动循环,但我要么得到相同的结果,要么代码停止而不循环回到开头。

import javax.swing.JOptionPane;
import java.text.DecimalFormat;

public class BarkingLotJOP5
{
    public static void main(String[] args)
    {
        String size;
        Double sm = 8.00, md = 12.00, lg = 17.00, total, tax = .09;
        DecimalFormat df = new DecimalFormat("$###,###.##");

            JOptionPane.showMessageDialog(null,"Welcome to BarkingLot.com.");
            JOptionPane.showMessageDialog(null, "It is $5 for small, $10 for medium, and $15 for large.");

        size = JOptionPane.showInputDialog("Enter the dog's size.");

        while
            (!size.equals("small") || size.equals("medium")|| size.equals("large"))
                {
        if
            (size.equalsIgnoreCase("small"))
               {
                 total = (sm*tax)+sm;
                 JOptionPane.showMessageDialog(null,"For a small dog, your total is "+ df.format(total)+
                                                                      "\nThank you, have a great day!");
               }
        else
        if
            (size.equalsIgnoreCase("medium"))
               {
                 total = (md*tax)+md;
                 JOptionPane.showMessageDialog(null,"For a medium dog, your total is "+ df.format(total)+
                                                                               "\nThank you, have a great day!");
               }
        else
        if
            (size.equalsIgnoreCase("Large"))
                           {
                             total = (lg*tax)+lg;
                             JOptionPane.showMessageDialog(null,"For a large dog, your total is "+ df.format(total)+
                                                            "\nThank you, have a great day!");
                    }
        else
            JOptionPane.showMessageDialog(null,"Error");
               }
    }
}

最佳答案

while(!(size.equals("small") || size.equals("medium")|| size.equals("large")))

(注意大括号)。基本上你的代码检查如下:

如果满足以下条件,则继续循环:

大小不等于:

大小等于:

大小等于:

但你想要:

如果满足以下条件,则继续循环:

尺寸等于(小、中、大)

编辑:

在 else 条件中而不是:

else
            JOptionPane.showMessageDialog(null,"Error");

您可以使用:

else{
    JOptionPane.showMessageDialog(null,"Error, try again");
    size = JOptionPane.showInputDialog("Enter the dog's size.");
}

这将使输入框再次出现,并将 size 值再次设置为新值。

关于java - 当试图循环回到开头时陷入无限循环。 java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33929367/

相关文章:

java - JFrame 不添加来自单独类的图形

java - 如何在Java中循环播放音频文件?

java - 如何循环这个 switch 语句?

java - 从java中的.p7b文件中提取个人.cer证书

java - 不直接编写 Servlet 来创建 REST API 的原因

java - 我应该在 netbeans 中创建 Images 文件夹吗

swift - Swift 中 for 循环内的加法或减法

java - 在 spring-boot 1.4.x 中添加原因短语

java - 当 equals() 使用相似性度量时覆盖 hashCode() 以与 equals() 一致

java - 如何在正在验证的 jTextField 上设置默认值?