我在网上发现了一些代码来制作我自己的小项目,因为我想在业余时间学习Java,我发现了一些破碎的代码并尝试自己修复它,但现在我卡住了。 我收到的错误是:
TempProg.java:53: error: cannot find symbol
Temperature tempConv = new Temperature();
^
symbol: class Temperature
location: class TempProg
TempProg.java:53: error: cannot find symbol
Temperature tempConv = new Temperature();
^
symbol: class Temperature
location: class TempProg
2 errors
import java.util.Scanner;
public class TempProg {
public double currentTemp;
public double TempF;
public double TempK;
public double newTemp;
public TempProg(double startCurrentTemp, double startTempF, double startTempK, double startnewTemp)
{
currentTemp = startCurrentTemp;
TempF = startTempF;
TempK = startTempK;
newTemp = startnewTemp;
}
private double Temperature(double currentTemp)
{
currentTemp = 100;
return currentTemp;
}
public double convertToF(double TempF, double currentTemp)
{
TempF = ((9 * currentTemp) / 5 ) + 32;
return TempF;
}
public double convertToK(double TempK, double currentTemp)
{
TempK = currentTemp + 273;
return TempK;
}
public double updateTempC(double currentTemp)
{
newTemp = currentTemp;
return currentTemp;
}
public double getTemp()
{
return currentTemp;
}
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
Temperature tempConv = new Temperature();
int newTemp;
boolean entryValid;
final int MIN_TEMP = -273;
final int MAX_TEMP = 10000;
System.out.println("\tTemperature converter");
char selection = 'x';
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");
selection = scan.next().charAt(0);
switch(selection) {
case 'f':
System.out.println("\n\t" +tempConv.getTemp()+ " degrees C = "+tempConv.convertToF() +" degrees F" );
break;
case 'k':
System.out.println("\n\t" +tempConv.getTemp()+ " degrees C = "+tempConv.convertToK() +" degrees K" );
break;
case 'c':
entryValid=false;
while (!entryValid) {
System.out.print("\n\tPlease enter a new temperature: ");
newTemp = scan.nextInt();
if (newTemp < MIN_TEMP || newTemp > MAX_TEMP) {
System.out.println("\tPlease enter a valid temperature");
} else {
entryValid=true;
tempConv.updateTempC(newTemp);
}
}
break;
case 'q':
break;
default:
System.out.println("\n\tOption " + selection + " not understood");
}
}
}
}
答案 0 :(得分:0)
在第53行,您正尝试使用以下调用创建新的Temperature
对象:
Temperature tempConv = new Temperature();
Java中的new
运算符意味着您正在创建new
变量之后指定类型的新Object。
为了创建新Object的新实例,您必须将该类与创建新实例的代码放在同一个包中,或者必须导入该类。
您收到cannot find symbol
错误的事实意味着编译器无法找到该类,因此它不在同一个包中而且未导入。
通常,对此的修复是导入类(如果已经创建了它并且它在其他类中)。如果这是您要创建的代码,则可能需要创建Temperature
对象。
稍后在您的代码中,您有以下方法:
private double Temperature(double currentTemp)
{
currentTemp = 100;
return currentTemp;
}
这会创建一个名为Temperature
的方法,但不会创建Temperature
对象。这可能令人困惑。在Java中,为避免这种混淆,方法名称应始终以lowerCase字母开头,而类应始终以UpperCase开头。
答案 1 :(得分:0)
您收到错误是因为您尝试使用方法名称创建新对象。 new ClassName()用于创建该类的对象。 new关键字与类名一起使用,而不是方法名。要首先调用该方法,您必须创建该类的对象,并且在该对象的帮助下,您可以调用该方法。在你的TempProg类中你没有默认的构造函数,如果你想创建obj到TempProg而不为你的成员变量设置任何值,比如currentTemp,.....
在你的情况下,你应该这样做 -
TempProg()
{}
TempProg tempObj = new TempProg(); //than you can create the obj of TempProg like that
if you want to use parameterized constructor than you have to do like
TempProg tempObj = new TempPRog(11.2,222,453,455); //whatever vallue you want to set for those variables
tempObj.Temperature(1122); // call the Temperature method by passing value.
我只是在这篇文章中作为一个例子。