【问题标题】:Class Declarations for temperature program in JavaJava中温度程序的类声明
【发布时间】:2023-03-09 20:20:01
【问题描述】:

所以这就是我遇到的问题我需要输入这五个方法:

  • Temperature – 构造方法。这应该将初始温度设置为 100。
  • getTemp – 返回当前存储的摄氏度值的方法
  • convertToF – 一种将摄氏温度转换为华氏度的方法
  • convertToK - 一种将摄氏温度转换为开氏度的方法
  • updateTempC - 一种以摄氏度更新存储温度的方法

进入这个程序:

import java.util.Scanner;

public class TempProg {



public static void main(String[] args)
{

    // Declare objects
    Scanner scan = new Scanner(System.in);
    Temperature tempConv = new Temperature();

    // Declare variables
    int newTemp;
    boolean entryValid;

    // Declare constants
    final int MIN_TEMP = -273;
    final int MAX_TEMP = 10000;

    System.out.println("\tTemperature converter");

    // Set a dummy selection value, so that we always show the options on the first go
    char selection = 'x';

    // Offer a list of options
    while (selection != 'q') { 
        System.out.println("\n\tCurrent temperature in degrees C: " + tempConv.getTemp());
        System.out.println("\tType f to display temperature in Fahrenheit");
        System.out.println("\tType k to display temperature in Kelvin");
        System.out.println("\tType c to set a new temperature");
        System.out.println("\tType q to quit");

        // Read from the keyboard
        selection = scan.next().charAt(0);


        // Act on the selection
        switch(selection) {
            case 'f': // Print Fahrenheit version
                System.out.println("\n\t" +tempConv.getTemp()+ " degrees C = "+tempConv.convertToF() +" degrees F" );
                break;

            case 'k': // Print Kelvin version 
                System.out.println("\n\t" +tempConv.getTemp()+ " degrees C = "+tempConv.convertToK() +" degrees K" );
                break;

            case 'c': // Get a new temperature

                entryValid=false; // Reset entryValid for this round

                /* test for !entryValid
                 * i.e. "not entryValid"
                 * i.e. same as "entryValid == false"
                 */

                while (!entryValid) { // This will always be true the first time
                    System.out.print("\n\tPlease enter a new temperature: ");
                    newTemp = scan.nextInt();

                    // Check validity of new temperature
                    if (newTemp < MIN_TEMP || newTemp > MAX_TEMP) {
                        System.out.println("\tPlease enter a valid temperature");
                    } else {
                        entryValid=true;
                        tempConv.updateTempC(newTemp);
                    }
                }

                break;

            case 'q': // Don't do anything for q, we print a message later
                break;

            default: // If it is not f, k, c or q then default is error message
                System.out.println("\n\tOption " + selection + " not understood");
        }
    }
    System.out.println("\n\tPROGRAM ENDED");
}
}

这就是我目前所拥有的......

private double Temperature (double currentTemp)
    {
        currentTemp = 100;
        return currentTemp;

    }

    public double convertToF (double TempF)
    {
        TempF = ((9 * currentTemp) / 5 ) + 32;
        return TempF();
    }

    public double convertToK (double TempK)
    {
        TempK = currentTemp + 273;
        return TempK();
    }

    public void updateTempC (double currentTemp)
    {
        newTemp = currentTemp;

        return currentTemp();
    }

    public double getTemp()
    {
        return currentTemp;
     }

它基本上不会编译,我 99% 肯定它是非常错误的,我真的不知道该怎么做......想法......建议?

错误是:

    tempProg.java:14: error: class TempProg is public, should be declared in a file named            TempProg.java
public class TempProg {
       ^
    tempProg.java:26: error: cannot find symbol
            TempF = ((9 * currentTemp) / 5 ) + 32;
                          ^
  symbol:   variable currentTemp
  location: class TempProg
    tempProg.java:27: error: cannot find symbol
            return TempF();
                   ^
  symbol:   method TempF()
  location: class TempProg
    tempProg.java:32: error: cannot find symbol
            TempK = currentTemp + 273;
                    ^
  symbol:   variable currentTemp
  location: class TempProg
    tempProg.java:33: error: cannot find symbol
            return TempK();
                   ^
  symbol:   method TempK()
  location: class TempProg
    tempProg.java:38: error: cannot find symbol
            newTemp = currentTemp;
            ^
  symbol:   variable newTemp
  location: class TempProg
    tempProg.java:40: error: cannot return a value from method whose result type is void
            return currentTemp();
                              ^
    tempProg.java:45: error: cannot find symbol
            return currentTemp;
                   ^
  symbol:   variable currentTemp
  location: class TempProg
    tempProg.java:54: error: cannot find symbol
        Temperature tempConv = new Temperature();
        ^
  symbol:   class Temperature
  location: class TempProg
    tempProg.java:54: error: cannot find symbol
        Temperature tempConv = new Temperature();
                                   ^
  symbol:   class Temperature
  location: class TempProg

【问题讨论】:

  • 您的问题是什么?我真的无法理解“它基本上没有它”。
  • 好像程序根本无法编译,我不知道该怎么办!
  • @marianna013 向我们展示错误和位置。
  • 大概你已经学会了如何用 Java 编写构造函数,或者为什么你会被设置为这个练习。要么看看你笔记中的例子,或者如果你没有,谷歌“Java构造函数”。

标签: java class methods declaration temperature


【解决方案1】:

你需要一个Temperature 类。我只是猜测您已将这些方法添加到 TempProg 考虑到不正确的“构造函数”。你需要的是像这样的另一个类......

public class Temperature {
  // Put those method and data members here
}

构造函数不应返回值。它应该看起来像...public Temperature(),或者根据您的具体要求进行一些变化。

【讨论】:

    【解决方案2】:

    输出 output

    默认温度:0.0C 或 32.0F

    1.将摄氏度转换为华氏温度

    2.将Fareiheit转换为摄氏度

    3.更新默认温度

    1

    输入摄氏温度以转换为华氏温度

    60

    60.0C = 92.0F

    默认温度:0.0C 或 32.0F

    1.将摄氏度转换为华氏温度

    2.将Fareiheit转换为摄氏度

    3.更新默认温度

    2

    输入华氏温度以转换成摄氏度

    -10

    -10.0F = -23.333333333333336C

    默认温度:0.0C 或 32.0F

    1.将摄氏度转换为华氏温度

    2.将Fareiheit转换为摄氏度

    3.更新默认温度

    3

    输入摄氏温度

    25

    默认温度:25.0C 或 57.0F

    1.将摄氏度转换为华氏温度

    2.将Fareiheit转换为摄氏度

    3.更新默认温度


    Temperature.java

    public interface Temperature {
        public double getTempInFarenheit(double celcius);
        public double getTempInCelcius(double farenheit);
        public double getCurrentTemp();
        public double setDefaultTemp(double defaultCelcius);
        }
    

    TemperatureImpl.java

    public class TemperatureImpl implements Temperature {
    
        private double defaultTemp=0.0;
    
        public double Temperature(double defaultTemp){
            return this.defaultTemp=defaultTemp;
        }
    
        @Override
        public double getTempInFarenheit(double celcius) {
            return ((double)(9/5)*(celcius+32.0));
        }
    
        @Override
        public double getTempInCelcius(double farenheit) {
            return ((double)5/9*(farenheit-32.0));
        }
    
        @Override
        public double getCurrentTemp() {
            return defaultTemp;
        }
    
        @Override
        public double setDefaultTemp(double defaultCelcius){
            return this.defaultTemp = defaultCelcius;
        }
    }
    

    Main.java

    import java.util.Scanner;
    
    public class Main {
    
        public static void main(String[] args) {
    
            TemperatureImpl temp = new TemperatureImpl();
    
            while(true){
                System.out.println("Default temperatures: "+temp.getCurrentTemp()+"C OR "+temp.getTempInFarenheit(temp.getCurrentTemp())+"F");
                System.out.println("1.Convert Celcius to Fareiheit");
                System.out.println("2.Convert Fareiheit to Celcius");
                System.out.println("3.Update default temperature");
                Scanner sc = new Scanner(System.in);
                int input = sc.nextInt();
                switch (input) {
                case 1: System.out.println("Enter temperature in Celcius to convert into Farenheit");
                    double celcius = sc.nextDouble();
                    System.out.println(celcius+"C = "+temp.getTempInFarenheit(celcius)+"F");
                    break;
                case 2: System.out.println("Enter temperature in Farenheit to convert into Celcius");
                double fareinheit = sc.nextDouble();
                System.out.println(fareinheit+"F = "+temp.getTempInCelcius(fareinheit)+"C");
                break;
                case 3: System.out.println("Enter temperature in celcius");
                temp.setDefaultTemp(sc.nextDouble());
                    break;
                default:
                    System.out.println("Invalid input.");;
                }
    
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多