Java:class results invisible

Résolu
domxaline -  
 domxaline -
Bonjour,
j'ai deux package et une classe
dans les deux package j'ai aucun pb
mais en compilant mon class Hybrid, ce dernier s'affiche le message suivantes
The type Results is not visible

at Hybrid.main(Hybrid.java:7)
la ligne 7 est:
Results student1=new Results();

j'ai essayé changer la ligne
class Results extends Test implements Sports
en
public class Results extends Test implements Sports
qui s'afiiche une error:
the public type Results must be defined in its own file

que je dois faire, pour faire visible, mon class résults,aidez moi svp

import Package2.Sports; 
package Package1; 
public class Student  
{ 
 int rollNumber; 
 void getNumber(int n) 
 { 
  rollNumber=n; 
 } 
 void putNumber() 
 {  
  System.out.println("Roll No:"+rollNumber); 
 } 
} 
class Test extends Student 
{ 
 float part1, part2; 
 void getMarks(float m1,float m2) 
 { 
  part1=m1; 
  part2=m2; 
 } 
 void putMarks() 
 { 
  System.out.println("Marks obtained"); 
  System.out.println("Part 1="+part1); 
  System.out.println("Part 2="+part2); 
 } 
} 
class Results extends Test implements Sports 
{ 
 float total; 
 public void putWt() 
 { 
  System.out.println("Sports Wt="+sportWt); 
 } 
 void display() 
 { 
  total=part1+part2+sportWt; 
  putNumber(); 
  putMarks(); 
  putWt(); 
  System.out.println("Total score="+total); 
 } 
} 

package Package2; 
public interface Sports  
{ 
 float sportWt=6.0F; 
 void putWt(); 
} 

import Package1.*;
import Package2.*;
public class Hybrid
{
public static void main(String[]args)
{
Results student1=new Results();
student1.getNumber(1234);
student1.getMarks(27.5F,33.0F);
student1.display();
}
}

9 réponses

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    "the public type Results must be defined in its own file"
    Commence par faire ce qu'on te demande ce sera un bon début...

    Une classe public doit toujours être dans un fichier .java qui porte son nom.
    Tu devras donc avoir un fichier Results.java ce qui n'est pas le cas pour l'instant, vu que la classe Results est dans le fichier Student.java
    D'une manière générale, une classe devrait presque toujours être définie dans son propre fichier, ça vaut donc aussi pour la classe Test...
    0
  2. domxaline
     
    j'ai corrigé ainsi
    import Package2.*; 
    package Package1; 
    public class Student  
    { 
     int rollNumber; 
     public void getNumber(int n) 
     { 
      rollNumber=n; 
     } 
     void putNumber() 
     {  
      System.out.println("Roll No:"+rollNumber); 
     }  
    } 
    


    package Package2; 
    public interface Sports  
    { 
     float sportWt=6.0F; 
     void putWt(); 
    } 
    


    import Package1.*; 
    import Package2.*; 
    class Test extends Student 
    { 
     float part1, part2; 
     void getMarks(float m1,float m2) 
     { 
      part1=m1; 
      part2=m2; 
     } 
     void putMarks() 
     { 
      System.out.println("Marks obtained"); 
      System.out.println("Part 1="+part1); 
      System.out.println("Part 2="+part2); 
     } 
    public class Results extends Test implements Sports 
    { 
      public void putWt() 
      { 
       System.out.println("Sports Wt="+sportWt); 
      } 
      float total; 
      void display() 
      { 
       total=part1+part2+sportWt; 
       putNumber(); 
       putMarks(); 
       putWt(); 
       System.out.println("Total score="+total); 
      } 
    }} 
    
    

    import Package1.*; 
    import Package2.*; 
    public class Hybrid extends Test 
    { 
     public static void main(String[]args) 
     { 
      Results student1=new Results(); 
      student1.getNumber(1234); 
      student1.getMarks(27.5F,33.0F); 
      student1.display(); 
     } 
    } 
    

    en compilant j'ai error suivantes
    No enclosing instance of type Test is accessible. Must qualify the allocation with an enclosing instance of type Test (e.g. x.new A() where x is an instance of Test).

    at Hybrid.main(Hybrid.java:7)
    la ligne 7 est:
    Results student1=new Results();
    merci pour vos aides
    0
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      Parce que tu ne sais pas faire un copier-coller de la classe Results dans un nouveau fichier...
      Ici tu as encore tout dans une même un fichier, et pire tu as mis ton public class Results à l'intérieur de la classe privée Test... du coup ça donne n'importe quoi !
      0
  3. domxaline
     
    j'ai corrigé mon prg,mais j'ai encore un petit souci
    dans le output
    s'affiche pas valeur de Roll No:
    au lieu de s'afficher Roll No:1234

    il s'affiche seulement:
    Roll No:0
    Marks obtained
    Part1=27.5
    Part2=33.0
    Sports Wt=6.0
    Total score=66.5

    import package2.*;
    public class Student 
    {
       int rollNumber;
       void getNumber(int n)
       {
        int rollNumber=n;
       }
       void putNumber()
       {
        System.out.println("Roll No:"+rollNumber);
       }
    }
    


    import package1.*;
    package package2;
    interface Sports
    {
     float sportWt=6.0F;
     void putWt();
    }
    class Test extends Student
    {
     float part1,part2;
     void getMarks(float m1, float m2)
     {
      part1=m1;
      part2=m2;
     }
     void putMarks()
     {
      System.out.println("Marks obtained");
      System.out.println("Part1="+part1);
      System.out.println("Part2="+part2);
     }
    }
    class Results extends Test implements  Sports
    {
     float total;
     public void putWt()
     {
      System.out.println("Sports Wt="+sportWt);
     }
     void display()
     {
      total=part1+part2+sportWt;
      putNumber();
      putMarks();
      putWt();
      System.out.println("Total score="+total);
     }
    }
    


    import package1.*;
    package package2;
    public class Hybrid 
    {
    public static void main(String[]args)
         {
         Results student1=new Results();
         student1.getNumber(1234);
         student1.getMarks(27.5F,33.0F);
         student1.display();
         }
    }
    
    0
  4. domxaline
     
    il n'y a personne pour m'aider?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. KX Messages postés 19031 Statut Modérateur 3 020
     
    Ce que tu appelles getNumber est en fait un setNumber, et tu ne dois pas redéfinir rollNumber comme variable locale alors qu'elle existe déjà comme argument de classe.

    void setNumber(int n) 
    { 
        rollNumber=n; 
    } 
    
    Results student1=new Results(); 
    student1.setNumber(1234); 
    student1.setMarks(27.5F,33.0F); // idem, c'est un set 
    student1.display();

    Il faudrait que tu utilises un IDE comme Eclipse ou NetBeans pour exécuter ton code en pas à pas, parce que ce genre d'erreurs "d'étourderie" tu dois pouvoir les corriger seul ! La confiance n'exclut pas le contrôle
    0
  7. domxaline
     
    bonjour
    j'ai corrigé comme vs m'avez dit
    pb est toujours maintenant,s'affiche le message suivant
    Exception in thread "main" java.lang.Error: Unresolved compilation problem:
    The method setMarks(float, float) is undefined for the type Results

    at Package2.Hybrid.main(Hybrid.java:9)

    la ligne 9 est:
    student1.setMarks(27.5F,33.0F);

    import Package2.*; 
    package Package1.*; 
    public class Student  
    { 
     int rollNumber; 
     public void setNumber(int n) 
     { 
      rollNumber=n; 
     } 
     void putNumber() 
     {  
      System.out.println("Roll No:"+rollNumber); 
     } 
    } 
    


    import Package1.*; 
    package Package2; 
    public class Hybrid  
    { 
     public static void main(String[]args) 
        { 
        Results student1=new Results(); 
        student1.setNumber(1234); 
        student1.setMarks(27.5F,33.0F); 
        student1.display(); 
        } 
    } 
    

    et encore
    dans le class sports, dans la method display
    dans la phrase suivante putNumber(); est souligné
    0
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      "Exception in thread "main" java.lang.Error: Unresolved compilation problem"
      À force de les avoir ce genre d'erreurs ne devrait plus te poser de problème...
      Avant d'exécuter un programme tu dois le compiler sans erreur or ce n'est pas le cas !

      "The method setMarks(float, float) is undefined for the type Results"
      C'est parce que tu dois toujours avoir getMarks(float, float), il suffit de changer une lettre pour corriger ça.

      Ensuite tu parles d'une "classe sports", or il n'y a qu'une interface Sports, et elle ne contient ni la méthode display (qui est dans Results), ni putNumber (qui est dans Students), alors il faudrait être plus précis, quand tu dis que c'est "souligné", c'est qu'il y a une erreur de compilation, le message qui décrit cette erreur t'aidera à la corriger !
      0
  8. domxaline
     
    getMarks(float, float)
    j'ai changé en long,marche pas
    et j'ai changé en double
    resultat reste le même
    0
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      Il ne s'agit pas de bidouiller, mais de faire ce que le compilateur te dis !
      Il ne trouve pas setMarks(float, float), car tu as getMarks(float, float)
      Tu as donc juste à changer le get en set pour corriger l'erreur !
      0
  9. domxaline
     
    maintenant j'ai corrigé mon erreur
    en compilant mon prg j'ai erreur suivante
    Exception in thread "main" java.lang.Error: Unresolved compilation problem:

    at Package2.Hybrid.main(Hybrid.java:5)

    ligne 5 est:
    public static void main(String[]args)

    import Package1.*;
    package Package2;
    public class Hybrid 
    {
    	public static void main(String[]args)
        {
        Results student1=new Results();
        student1.setNumber(1234);
        student1.getMarks(27.5F,33.0F);
        student1.display();
        }
    }
    
    0
  10. domxaline
     
    ok c'est bon,j'ai corrigé tous mes erreurs, ça marche
    merci pour vos aides

    package Package1;
    import Package2.*;
     
    public class Student 
    {
     int rollNumber;
    public void setNumber(int n)
     {
    	 rollNumber=n;
     }
     public void putNumber()
     { 
    	 System.out.println("Roll No:"+rollNumber);
     }
    }
    
    package Package2;
    import Package1.*;
    interface Sports 
    {
    	 float sportWt=6.0F;
    	 void putWt();
    	}
    	class Test extends Student
    	{
    	 float part1,part2;
    	 void getMarks(float m1,float m2)
    	 {
    	  part1=m1;
    	  part2=m2;
    	 }
    	 void putMarks()
    	 {
    	  System.out.println("Marks obtained");
    	  System.out.println("Part1="+part1);
    	  System.out.println("Part2="+part2);
    	 }
    	}
    	class Results extends Test implements  Sports
    	{
    	 float total;
    	 public void putWt()
    	 {
    	  System.out.println("Sports Wt="+sportWt);
    	 }
    	 public void display()
    	 {
    	  total=part1+part2+sportWt;
    	  putNumber();
    	  putMarks();
    	  putWt();
    	  System.out.println("Total score="+total);
    	 }
    
    package Package2;
    import Package1.*;
    public class Hybrid 
    {
    	public static void main(String[]args)
        {
        Results student1=new Results();
        student1.setNumber(1234);
        student1.getMarks(27.5F,33.0F);
        student1.display();
        }
    }
    

    output
    Roll No:1234
    Marks obtained
    Part1=27.5
    Part2=33.0
    Sports Wt=6.0
    Total score=66.5
    0