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

Java-温度转换循环问题

曾枫
2023-03-14

我正在做关于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个答案

段干靖
2023-03-14

您已经将所有内容都包含在if(choice!=3)中,因此即使您以3的形式输入choice,那么包含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

  }
叶文博
2023-03-14

您的逻辑错误。您有一个外部if语句,只有在用户没有输入三的情况下才会输入。因此,如果您这样做了,内部if中的ore将不会被执行,因此您的消息永远不会打印:

//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
     }

}

如果,则需要移除外部,或者将else块移动到外部if之后。

 类似资料:
  • 我对Java还是个新手,在理解OOP方面更是新手,所以请不要取笑我的不理解。 我试图设计一个程序,让用户输入华氏或摄氏度的温度,然后程序将确定另一个测量中的温度。 有没有人能给我一些建议,告诉我我的方向是否正确? 这是我到目前为止所做的,请记住,这是我对OOP的第一次尝试,所以它可能看起来一团糟。

  • 我的目标是创建一个以摄氏度和华氏度表示温度的类“温度”。该类需要以下组成的四个构造函数。我需要帮忙的部分是两个访问器方法,因为我还不太熟悉它。我写了代码,但不确定它是否可行,我很感激一些洞察力 四个构造函数:1.一个用于度数2.一个用于刻度3.一个用于度数和刻度4.默认构造函数 两种访问器方法: 一个以摄氏度为单位返回温度 另一个返回华氏度 w/下面给出的公式C=5(F-32)/9 F=9*C/5

  • 我正在做一个项目,需要我使用TinkerKit热敏电阻传感器来获得室温。检测后,Arduino BT板必须通过蓝牙将串行数据发送回Android手机。温度需要在Celcius的手机屏幕上显示。 我已经使串行通信链接工作。但热敏电阻的读数似乎很奇怪。它的读数是173/174/175,但我不确定它的读数是华氏度还是摄氏度(因为我找不到任何数据表和热敏电阻读数装置的详细信息)。 我必须包括任何带数值的温

  • 我有以下代码: 这段代码的目的是将旧的丹麦等级转换成新的等级,但问题是当使用< code>convert13to7函数时,我没有得到任何输出。有人看到这里的问题了吗?

  • 本文向大家介绍C#程序将摄氏温度转换为华氏温度,包括了C#程序将摄氏温度转换为华氏温度的使用技巧和注意事项,需要的朋友参考一下 首先,设置摄氏温度- 现在将其转换为华氏度: 您可以尝试运行以下代码将摄氏温度转换为华氏温度。 示例 输出结果

  • 我在Java从华氏温度转换到摄氏温度时遇到了问题。我刚刚开始学习Java,现在还在阅读书籍和教程。 对于我的第一个程序,我正在尝试根据本教程创建一个基本的温度计算器。 我想扩展它的功能,也包括华氏温度到摄氏温度的转换,以及基本摄氏温度到华氏温度的转换。 因此,我使用给出的示例代码完成了摄氏温度到华氏温度的部分,现在,使用相同的代码,经过大量的试验和错误后稍微修改,我正在尝试处理另一半。我让它在某种