Conversion de fahrenheit en celcius (Java)


Ce que j'essaie de faire, c'est d'écrire un programme qui prend une valeur Fahrenheit comprise entre 1 et 100 et la convertit en Celsius. si la valeur n'est pas entre le code doit réexécuter sans avoir à redémarrer le programme. Je suis assez nouveau sur Java mais c'est ce que j'ai trouvé.

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);

}
}

Ce code fonctionne presque. Il réexécute si le " f " n'est pas compris entre 1 et 100. si je corrige alors f la valeur acceptable la valeur Celsius écrit "C" fois "infini", la boucle while pour une raison quelconque ne rompt pas. Si quelqu'un pouvait expliquer ce que j'ai fait de mal, je l'apprécierais.

Author: Andrew Thompson, 2016-09-23

1 answers

Je pense que vous voudrez peut-être cela à la place, lorsque j'exécute le code que vous avez fourni et que j'entre 114 suivi de 14, le programme se termine sans afficher la conversion. Au lieu de cela, vous pouvez faire ce qui suit:

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";
            }
        }

    }
}
 1
Author: PEF, 2016-09-23 12:43:36