2016-04-21 2 views
-4

Quand je lance le code suivant je reçois l'erreur - Exception dans le thread « principal » java.lang.Error: problème de compilation non résolues:Java Erreur: compilation non résolue

at homework6.main(homework6.java:6) 

Je fait des recherches sur la raison pour laquelle cela pourrait se produire et les réponses précédentes indiquaient que le nom de la classe devait correspondre au nom du fichier java, ma classe correspondait aussi à celle du fichier .java. J'ai également essayé de supprimer "void" et l'ensemble de l'instruction, mais une nouvelle erreur s'est produite en disant que j'avais besoin de void public (String [] args). Est-ce que je rencontre un problème différent alors la classe et .java?

public class homework6 { 

    public static void main(String[] args) { 

     class Date { 
      private int month; 
      private int day; 
      private int year; 
      private String name; 

      public Date() { 

      } 

      { 
       month=1; 
       day = 1; 
       year = 2001; 
       name = "January"; 
      } 

      public Date(int m, int d, int y) { 
       setDate(m, d, y); 
      } 

      public void setDate(int m, int d, int y) { 
       month = m; 
       day = d; 
       year = y; 

       if (m ==1) 
        name="January"; 
       else if(m == 2) 
        name="February"; 
       else if(m == 3) 
        name="March"; 
       else if(m == 4) 
        name="April"; 
       else if(m == 5) 
        name = "May"; 
       else if(m == 6) 
        name = "June"; 
       else if(m == 7) 
        name = "July"; 
       else if(m == 8) 
        name = "August"; 
       else if(m == 9) 
        name = "September"; 
       else if(m == 10) 
        name = "October"; 
       else if(m == 11) 
        name="November"; 
       else if(m == 12) 
        name = "December"; 
      } 

      public void showDate1() { 
       System.out.println(month + "/" + day + "/" + year); 
      } 

      public void showDate2() { 
       System.out.println(name + "" + day + "," + year); 
      } 

      public void showDate3() { 
       System.out.println(day + "" + name + "" + year); 
      } 

     } 
    } 
} 
+0

Vous ne pouvez pas avoir une classe à l'intérieur d'une fonction. Mettez-le en dehors de votre fonction à la place. – Majora320

+0

Je viens de copier votre code dans un fichier nommé 'homework6.java' - avec cette majuscule exacte - et il est très bien compilé. Il a fonctionné sans erreur, bien qu'il n'ait rien fait puisque la seule chose que fait votre méthode main() est de déclarer une classe (ne pas l'instancier, et encore moins invoquer n'importe quelle méthode). – yshavit

Répondre

0

Vous nichant une classe, Date, dans une méthode, la principale méthode pour être précis - quelque chose que vous ne pouvez pas et ne doit pas faire.

Solution: ne faites pas cela.

Créez un fichier appelé Date.java et placez votre code de classe Date dans celui-ci.
Créez un deuxième fichier appelé Homework6.java et placez votre méthode principale dedans.

Terminé.

+0

Ceci est incorrect - vous pouvez imbriquer une classe dans une méthode. J'ai vérifié deux fois tout à l'heure et vérifié cela sur le 1.8, bien que je sois presque sûr que c'est vrai aussi dans 1.7, et qui sait plus tôt. – yshavit

0

Valide les points dans la réponse. Vous pouvez alternativement mettre la classe en dehors de la classe principale et la compiler.

Si vous prenez un peu de recul, et en supposant que vous ayez compilé ce code, quel serait le résultat attendu? Vous semblez ne faire aucun appel à aucune méthode. Voulez-vous passer un moment à comprendre votre logique?

+0

Comment suggéreriez-vous que je mette la classe en dehors de la classe principale? Dois-je inclure de la date de cours à "name =" January? " –

0

Probablement à cause de ceci:

public Date() { 

} 

{ 
    month=1; 
    day = 1; 
    year = 2001; 
    name = "January"; 
} 

doivent être enlevés Les deux premiers crochets, parce que le code entre les deux secondes se trouve pas dans une méthode. Donc, il devrait ressembler à ceci:

public Date() { 
    month=1; 
    day = 1; 
    year = 2001; 
    name = "January"; 
}