2017-04-07 15 views
0

私は一定の日数と開始温度の入力を得るプログラムを作ろうとしています。温度は日々のある一定の方法で変化します。その後、最終日の温度を表示します。私の教授は、クラスTempPattern、fields num_days、first_day_temp、およびコンストラクタとfinalTempメソッドを使用すると言っていました。私は何を持っているのだろうか:dr.javaのヌルポインタ例外

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) 

私は何かがnull値だと思いますが、これを修正する方法は本当に分かりません。私はまた、コンストラクタやフィールドのものを正しく作ったとは思わないので、助けやアドバイスを自由にしてください。私は理にかなっていないものはすべて解決します。 TYを事前に入力してください。

+0

メインメソッドは静的である必要があります。 – Omore

答えて

0

物事のカップルを変更する必要がある、ここにバギーがあります

  • 主な方法は、必要があり、静的である必要があります。
  • findFinalDay()メソッドは、main()メソッドから呼び出すためには静的でなければなりません。
  • TemperaturePatternクラスは、内部クラスとして機能するように意図されているため、パブリックではありません(私の理解によると)。静的メソッドの

    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方法または変数は、クラスがロードされる時に作成され

は、以下の変更されたコードを探します。 staticとして宣言されていないメソッドまたは変数は、new演算子を使用してクラスがオブジェクトとしてインスタンス化された場合にのみ作成されます。

また、Java仮想マシンではなく、それだけでしばらくコンパイルをロードし、main()方法で実行を開始したクラスのインスタンスを作成していない、main()方法は、そのようにすぐにクラスがあるようstatic修飾子で宣言する必要がありますロードされた場合は、main()メソッドを使用できます。 static修飾子を持っていない

これらの変数とmain()方法の外にあるクラスのメソッドは、クラスのインスタンスがmain()メソッド内のオブジェクトとして作成されるまで、使用あなたのケースではそうすることができませんメソッド 'findFinalDayTemperature()'は 'main()'メソッドによって呼び出されるために静的でなければなりません。

+0

どうもありがとうございました〜なぜメソッドが静的でなければならないのか説明してもらえますか? – JNV

+0

@JNVそれが助けてくれてうれしいです。静的修飾子に関する私の更新を見つけてください。 – dildeepak

+0

@JNVまた、それが助けられたら、答えをアップアップしてください。 – dildeepak