我试图制作一个程序,我可以输入一定的天数和起始温度。温度在整个天数内以某种方式变化。然后打印最后一天的温度。我的教授说使用TempPattern类,字段num_days和first_day_temp以及构造函数和finalTemp方法。继承人我所拥有的:
public class TempPattern{
int num_of_days = 0;
int temp_first_day = 0;
public void TempPattern(int temp, int days){
days = num_of_days;
temp = temp_first_day;
}
public int num_of_days(int days){
return days;
}
public int temp_first_day(int temp){
return temp;
}
}
public void finalDayTemp(int days, int temp){
int half = days / 2;
int newtemp = temp + 2;
for (int current_day = 1; current_day <= half; current_day++){
newtemp = newtemp - 2;
}
for (int current_day = half + 1; current_day <= days; current_day++){
newtemp++;
}
System.out.println("Temperature on final day would be " + newtemp);
}
public void main(String[] args){
Scanner keyboard = new Scanner(System.in);
int days;
int temp;
System.out.print("number of days: ");
days = keyboard.nextInt();
System.out.print("temperature of first day: ");
temp = keyboard.nextInt();
finalDayTemp(days,temp);
}
它编译但是错误出现了。
java.lang.NullPointerException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:267)
我认为某些东西是空值,但我真的不知道如何解决这个问题。我也不认为我正确地完成了整个构造函数和字段,所以请随时提供任何帮助/建议,我很感激。我会清理任何没有意义的东西。 TY提前。
答案 0 :(得分:0)
这里有几个问题,需要改变:
找到以下修改过的代码:
import java.util.Scanner;
public class HWfive{
public static void findFinalDayTemperature(int days, int temp){
int half = days / 2;
int newtemp = temp + 2;
for (int current_day = 1; current_day <= half; current_day++){
newtemp = newtemp - 2;
}
for (int current_day = half + 1; current_day <= days; current_day++){
newtemp++;
}
System.out.println("Temperature on final day would be " + newtemp);
}
public static void main(String[] args){
Scanner keyboard = new Scanner(System.in);
int days;
int temp;
System.out.print("number of days: ");
days = keyboard.nextInt();
System.out.print("temperature of first day: ");
temp = keyboard.nextInt();
findFinalDayTemperature(days,temp);
}
class TemperaturePattern{
int num_of_days = 0;
int temp_first_day = 0;
public void TemperaturePattern(int temp, int days){
days = num_of_days;
temp = temp_first_day;
}
public int num_of_days(int days){
return days;
}
public int temp_first_day(int temp){
return temp;
}
}
}
静态方法的说明:在加载类时创建static
方法或变量。仅当将类实例化为对象(例如,使用new运算符)时,才会创建未声明为static
的方法或变量。
此外,Java虚拟机不会创建类的实例,而只是在编译时加载并在main()
方法开始执行,main()
方法必须使用{{1修饰符,以便加载类后,static
方法可用。
在将类的实例创建为类中的对象之前,不能使用那些在main()
方法之外且没有main()
修饰符的类的变量和方法。 static
方法,所以在你的情况下,方法'findFinalDayTemperature()'必须是静态的,才能通过'main()'方法调用它。