Java:class results invisible [Résolu/Fermé]

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





Afficher la suite 

9 réponses

Messages postés
16072
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
9 novembre 2019
2450
0
Merci
"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
Merci
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
KX
Messages postés
16072
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
9 novembre 2019
2450 -
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
Merci
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
Merci
il n'y a personne pour m'aider?
Messages postés
16072
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
9 novembre 2019
2450
0
Merci
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
Merci
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é
KX
Messages postés
16072
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
9 novembre 2019
2450 -
"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
Merci
getMarks(float, float)
j'ai changé en long,marche pas
et j'ai changé en double
resultat reste le même
KX
Messages postés
16072
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
9 novembre 2019
2450 -
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
Merci
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
Merci
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