Java温度转换循环问题

时间:2018-10-21 00:14:02

标签: java eclipse loops if-statement methods

我正在做Java编程小练习。

基本上,该应用程序允许用户输入华氏温度并显示摄氏温度或输入摄氏温度并显示华氏温度。 该应用程序包括一个摄氏温度方法,该方法返回等于华氏温度的摄氏温度。该应用程序还包括一个华氏温度方法,该方法返回等于摄氏温度的华氏温度。

这是我的完整代码:

import java.util.Scanner;

public class Temperature{

    public static void main(String[] args) {  // Main Method//

        Scanner input = new Scanner(System.in);

        //Declare variables
        int choice; // the user's choice in the menu //
        int temp;   

        do   {

             // print the menu

                System.out.println("1.fahrenheit to Celsius"); 
                System.out.println("2.Celsius to Fahrenheit"); 
                System.out.println("3.Exit"); 
                System.out.println(""); 
                System.out.println("Choice:");

             choice = input.nextInt();


             if  ( choice != 3 ) {

         System.out.print( "Enter temperature: " ); // Display Enter Temperature
         temp = input.nextInt();  // Read Temperature


         if (choice == 1) {

             System.out.println( temp +  " Fahrenheit is " + toCelsius( temp ) + " Celsius ");
             System.out.println("");
         }

         else if (choice == 2 ) {
             System.out.println(temp + " Celsius is " +  toFahrenheit( temp ) + " Fahrenheit ");
             System.out.println("");

          } 

         else {
             System.out.println("Program terminated ");   //  Display "Program terminated" if user entered 3
             }

        }  //end if loop

        } // end do loop
        while (choice !=3);

    }  // end main method



    // return Celsius equivalent of Fahrenheit temperature
         public static int    toCelsius(int  fahrenheit) {
             int   celsius;
             celsius = (int) (5.0/9.0 * (fahrenheit - 32));
             return celsius;
           }  // end method celsius


         // return Fahrenheit equivalent of Celsius temperature
         public static int    toFahrenheit(int  celsius) {
             int   fahrenheit;
              fahrenheit = (int) (9.0/5.0 * celsius + 32);
             return fahrenheit;
           } // end method fahrenheit



    } 

好消息是包括这些方法的代码都可以使用。用户可以输入选项1或2,然后输入温度数字并以摄氏度或华氏度显示。但是,如果用户输入选项3,程序将显示“程序已终止”。对我来说,当我输入选项3时,程序停止工作(未显示“程序已终止”)。我认为“循环”部分或“ IF”部分存在问题。

有人可以帮我吗?

2 个答案:

答案 0 :(得分:2)

您的逻辑是错误的。您有一个外部if语句,仅当用户输入三个时才输入。因此,如果执行此操作,内部else中的if将不会执行,因此您的消息将永远不会打印:

//If you do enter three, it will skip over all of this:
if  ( choice != 3 ) {

     System.out.print( "Enter temperature: " ); // Display Enter Temperature
     temp = input.nextInt();  // Read Temperature


     if (choice == 1) {

         System.out.println( temp +  " Fahrenheit is " + toCelsius( temp ) + " Celsius ");
         System.out.println("");
     }

     else if (choice == 2 ) {
         System.out.println(temp + " Celsius is " +  toFahrenheit( temp ) + " Fahrenheit ");
         System.out.println("");

      } 
     else {   
         System.out.println("Program terminated ");   //  Display "Program terminated" if user entered 3
     }

}

您需要删除外部if,或者将else块移到外部if之后。

答案 1 :(得分:0)

您已经将所有内容都包含在if(choice!= 3)中,所以即使您将choice输入为3,否则包括程序终止在内的else也将无法运行。因此,只需重新整理括号,一切都会正常进行。

import java.util.Scanner;

public class Temperature{

   public static void main(String[] args) {  // Main Method//

       Scanner input = new Scanner(System.in);

    //Declare variables
       int choice; // the user's choice in the menu //
       int temp;   

       do   {

            // print the menu

               System.out.println("1.fahrenheit to Celsius"); 
               System.out.println("2.Celsius to Fahrenheit"); 
               System.out.println("3.Exit"); 
               System.out.println(""); 
               System.out.println("Choice:");

            choice = input.nextInt();


            if  ( choice != 3 ) {

              System.out.print( "Enter temperature: " ); // Display Enter Temperature
              temp = input.nextInt();  // Read Temperature


              if (choice == 1) {

                  System.out.println( temp +  " Fahrenheit is " + toCelsius( temp ) +" Celsius ");
                  System.out.println("");
              }

              else if (choice == 2 ) {
                  System.out.println(temp + " Celsius is " +  toFahrenheit( temp ) + " Fahrenheit ");
                  System.out.println("");

              } 

            }
            else {
             System.out.println("Program terminated ");   //  Display "Program terminated" if user entered 3
           }//end else loop

       } // end do loop
       while (choice !=3);

   }  // end main method



// return Celsius equivalent of Fahrenheit temperature
   public static int    toCelsius(int  fahrenheit) {
       int   celsius;
       celsius = (int) (5.0/9.0 * (fahrenheit - 32));
        return celsius;
   }  // end method celsius


     // return Fahrenheit equivalent of Celsius temperature
     public static int    toFahrenheit(int  celsius) {
         int   fahrenheit;
          fahrenheit = (int) (9.0/5.0 * celsius + 32);
         return fahrenheit;
       } // end method fahrenheit

  }