2017-04-07 3 views
0

En essayant de faire un programme où je reçois l'entrée d'un certain nombre de jours, et une température de départ. La température change d'une certaine manière tout au long de la quantité de jours. Il imprime ensuite la température du dernier jour. Mon professeur a dit d'utiliser la classe TempPattern, les champs num_days et first_day_temp ainsi qu'un constructeur et une méthode finalTemp. Heres ce que j'ai:null exception de pointeur dans 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); 
     } 

Il compile, mais cette erreur arrive. Je pense que quelque chose est une valeur nulle mais je ne sais vraiment pas comment résoudre ce problème. Je ne pense pas non plus que j'ai fait correctement tout le constructeur et les champs, alors n'hésitez pas à donner de l'aide/conseil, je l'apprécie. Je vais éclaircir tout ce qui n'a pas de sens. TY à l'avance.

+0

La méthode principale doit être statique. – Omore

Répondre

0

Il y a deux choses bogué ici, qui doit être changé:

  • la méthode principale devrait et doit être statique.
  • La méthode findFinalDay() doit être statique pour être appelée depuis la méthode main().
  • La classe TemperaturePattern ne devrait pas être publique, car elle est destinée à servir de classe interne (selon ce que je crois comprendre).

trouver le code modifié ci-dessous:

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

Explication des méthodes statiques: Procédé static ou variable est créé au moment où une classe est chargée. Une méthode ou une variable qui n'est pas déclarée static est créée uniquement lorsque la classe est instanciée en tant qu'objet par exemple en utilisant l'opérateur new.

En outre, la machine virtuelle Java ne crée pas une instance de la classe plutôt juste des charges alors que la compilation et commence l'exécution à la méthode main(), la méthode main() doit être déclarée avec le modificateur static de sorte que dès que la classe est chargé, la méthode main() est disponible.

Ces variables et méthodes de la classe qui sont en dehors de la méthode main() qui n'ont pas le modificateur static ne peuvent pas être utilisés jusqu'à ce qu'une instance de la classe a été créé comme un objet dans la méthode main(), donc dans votre cas La méthode 'findFinalDayTemperature()' doit être statique pour être appelée par la méthode 'main()'.

+0

Merci beaucoup pour votre aide ~ Cela vous dérange-t-il d'expliquer pourquoi les méthodes doivent être statiques? – JNV

+0

@JNV Je suis heureux que cela a aidé. S'il vous plaît trouver mes mises à jour sur le modificateur statique. – dildeepak

+0

@JNV Aussi, si le il a aidé, s'il vous plaît votez pour la réponse. – dildeepak