java - 将华氏度转换为摄氏度 (Java)

标签 java swing while-loop do-while

我想做的是编写一个程序,接受 1-100 之间的华氏度值并将其转换为摄氏度。如果该值不在之间,则代码应重新运行,而无需重新启动程序。我对 Java 很陌生,但这就是我的想法。

package forstaPakage;
import javax.swing.*;

public class FTillC {

public static void main(String[] args) {

    int f = Integer.parseInt(JOptionPane.showInputDialog("hur många farenheit?"));
    do{
        if(f>0 && f<101){
            int c =  ((f-32)*5) / 9;
            System.out.println(f + " farhenheit är lika med " + c + " celcius" );
            break;
        }
        else{
            f = Integer.parseInt(JOptionPane.showInputDialog("Ogiltligt värde, skriv in ett nytt"));

        }
    }while(f>101 || f<1);

}
}

这段代码几乎可以工作。如果“f”不在 1 和 100 之间,它会重新运行。如果我随后将 f 纠正为可接受的值,摄氏值会写出“C”“无穷大”次,则 while 循环由于某种原因不会中断。如果有人能解释我做错了什么,我将不胜感激。

最佳答案

我想你可能想要这个,当我运行你提供的代码并输入 114 后输入 14 时,程序退出而不显示转换。相反,您可以执行以下操作:

package forstaPakage;

import javax.swing.*;

public class Main {

    public static void main(String[] args) {

        String str = "";

        while(true) {
            int f = Integer.parseInt(JOptionPane.showInputDialog( str + "\n" + "hur många farenheit?"));
            if(f>0 && f<101){
                int c =  ((f-32)*5) / 9;
                System.out.println(f + " farhenheit är lika med " + c + " celcius" );
                break;
            } else {
                str = "Ogiltligt värde, skriv in ett nytt";
            }
        }

    }
}

关于java - 将华氏度转换为摄氏度 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39660345/

相关文章:

java - while 循环不退出

Java 并发迭代 : Divide and Conquer vs Runnable for each item

java - 如果他关闭程序会有消息提示

java - 在 GUI 应用程序中构建“关于我”页面

c - 了解 while 循环中的字符指针

php - 不要重复字符串多次

java - 我如何允许 JNLP 启动的软件访问套接字?

java - 使用 YOUTUBE-API 的视频路径字符串

java - setSize(WIDTH, HEIGHT) 和 setSize(new Dimension(WIDTH, HEIGHT)) 之间的区别

java - 两个停靠的组件,其中第二个组件填充剩余空间