Java:prg suivant me donne aucun output

Bonjour,
import java.io.*;
public class StuDetail 
{
  int RollNo;
}
class StudMarks extends StuDetail
{
	float sub1;
	float sub2;
	float sub3;
	float TotalMarks;
	
	void getData()
	{
		System.out.println("\nRecording Entry");
		try
		{
			BufferedReader obj=new BufferedReader(new InputStreamReader(System.in));
			String sRNo,sSub1,sSub2,sSub3;
			
			System.out.println("Enter Roll No:");
			System.out.flush();
			sRNo=obj.readLine();
			RollNo=Integer.parseInt(sRNo);
			
			System.out.println("Enter Marks for Subject 1:");
			System.out.flush();
			sSub1=obj.readLine();
			sub1=Float.parseFloat(sSub1);
			
			System.out.println("Enter Marks for Subject 2:");
			System.out.flush();
			sSub2=obj.readLine();
			sub2=Float.parseFloat(sSub2);
			
			System.out.println("Enter Marks for Subject 3:");
			System.out.flush();
			sSub3=obj.readLine();
			sub3=Float.parseFloat(sSub3);
			
			TotalMarks=sub1+sub2+sub3;
		}
		catch(Exception e)
		{}	
		}
	    void display()
	    {
	    	System.out.println("\nDisplaying Record");
	    	System.out.println("Roll No:"+RollNo);
	    	System.out.println("Subject 1:"+sub1);
	    	System.out.println("Subject 1:"+sub2);
	    	System.out.println("Subject 1:"+sub3);
	    	System.out.println("Total Marks:"+TotalMarks);
	    }
	    void TotalMarks()
	    {
	    	System.out.println("\nDisplaying Record");
	    	System.out.println("Roll No:"+RollNo);	
	    	System.out.println("Total Marks:"+TotalMarks);
	    }
	}
class StudentDatabase
{
 public static void main(String []args)
 {
	 System.out.println("\n======STUDENT DATABASE=====\n");
	 
	 float HighMark_sub1;
	 float HighMark_sub2;
	 float HighMark_sub3;
	 float StudHightMark;
	 int No_of_stud=3,choice;
	 String str;
	 char c;
	 
	 try
	 {
		BufferedReader obj=new BufferedReader(new InputStreamReader(System.in));
		System.out.print("\nEnter number of students:");
		System.out.flush();
		str=obj.readLine();
		No_of_stud=Integer.parseInt(str);
		StudMarks SMobj[]=new StudMarks[No_of_stud];
		
		while(true)
		{
			System.out.println("\nChoose your choice....");
			System.out.println("1)PASS ENTRY");
			System.out.println("2)DISPLAY ALL RECORDS");
			System.out.println("3)DISPLAT TOTAL MARKS for all students");
			System.out.println("4)DISPLAT HIGHEST MARKS in each subject");
			System.out.println("5 DISPLAY student who recived highest total marks");
			System.out.println("6 Exit");
			System.out.println("ENTER YOUR CHOICE:");
			System.out.flush();
			str=obj.readLine();
			choice=Integer.parseInt(str);
			
			switch(choice)
			{
			 case 1:
				 for(int i=0; i<No_of_stud; i++)
					 SMobj[i].getData();
				 break;
			 case 2:
				 for(int i=0; i<No_of_stud; i++)
					 SMobj[i].display();
				 break;
			 case 3:
				 for(int i=0; i<No_of_stud; i++)
					 SMobj[i].TotalMarks();
				 break;
			 case 4:break;
			 case 5:break;
			 case 6:System.out.println("\nThanks for visting.....");
			 System.exit(1);	 
			}
		} 
	 }
	 catch(Exception e)
	 {}
 }
}

en exécutant mon prg,rien se passe ,aidez moi svp

25 réponses

Résumé de la discussion

Plusieurs développeurs rencontrent des blocages similaires lors de la gestion d’entrées utilisateur et d’affichage dans un programme Java de gestion de base de données étudiants. Le fil montre que SMobj n’est pas initialisé avant son utilisation et que les exceptions sont capturées sans affichage, ce qui masque l’erreur et empêche l’affichage des enregistrements. D’autres réponses suggèrent d’utiliser des constructeurs et d’initialiser le tableau StudMarks, par exemple SMobj[i] = new StudMarks(...), puis d’imprimer les données après chaque entrée au lieu d’un affichage par défaut 0. Certaines réponses évoquent aussi la nécessité de corriger le calcul des totaux et des marges d’affichage, et de s’assurer que le code compile en séparant les responsabilités entre les classes et la méthode main.

Bobot (l’IA à votre service)
  1. j'écris ainsi mais resultat pas bon
    void StudHighestMarks()
    	    {
    	    	max=0;
    	    	for(int j=0;j<RollNo;j++)
    	    	{
    	    		if (TotalMarks >max) 
    	    	      {
    	    	        max = TotalMarks;
    	    	      }
    	    		else
    	    			min=(int) TotalMarks;
    
    	    	      
    	    	      System.out.println("highest marks RollNo is "+max);
    	    	 }
    
    	    	}
    

    aidez moi svp
    0
    1. il n'ya personne pour m'aider svp
      0
      1. donnez moi une idée
        void StudHighestMarks()
        	    {
        	    	
        	    	for(int i=0;i<RollNo;i++)
        	    	{
        	    		if(TotalMarks>max1)//à cette ligne j'hésite,donnez moi idée 	
        	    		{
        	    			max1=tmp;		
        	    			System.out.println(tmp);
        	    		}
        	    	}
        	    }
        
        0
        1. ok j'ai reussi faire le prg,
           void HighestMarks()
          	    {
          	    		max=0;
          	    		for(int i=0;i<3;i++)
          	    		{
          	    			if(sub1>sub2)
          	    				max=sub1;
          	    			else
          	    				max=sub2;
          	    			if (sub2>sub3)
          	    				max=sub2;
          	    			else
          	    				max=sub3;	
          	    		}
          	    		System.out.println("highest marks RollNo "+RollNo+" is "+max);
          	    }
          	    
          

          il me reste encore à faire
          void StudHighestMarks()
          pouvez vous m'aider svp
          0
          1. j'ecris ainis
                void HighestMarks()
                    {
                     for(int j=0;j<RollNo;j++)
                     {
                      max=0;
                      for(int i=0;i<3;i++)
                      {
                       if(RollNo>max)
                        max1=RollNo;
                      }
                      System.out.println("highest marks is:"+max1);
                     }
                   
                     System.out.println("*******Highest marks in each subject with roll 
            
            

            mais le result s'affiche RollNO
            Choose your choice....
            1)PASS ENTRY
            2)DISPLAY ALL RECORDS
            3)DISPLAT TOTAL MARKS for all students
            4)DISPLAT HIGHEST MARKS in each subject
            5 DISPLAY student who recived highest total marks
            6 Exit
            ENTER YOUR CHOICE:
            4
            #2
            highest marks is:10.0
            highest marks is:10.0
            highest marks is:10.0
            highest marks is:10.0
            highest marks is:10.0
            highest marks is:10.0
            highest marks is:10.0
            highest marks is:10.0
            highest marks is:10.0
            highest marks is:10.0
            *******Highest marks in each subject with roll no******
            highest marks is:20.0
            highest marks is:20.0
            highest marks is:20.0
            highest marks is:20.0
            highest marks is:20.0
            highest marks is:20.0
            highest marks is:20.0
            highest marks is:20.0
            highest marks is:20.0
            highest marks is:20.0
            highest marks is:20.0
            highest marks is:20.0
            highest marks is:20.0
            highest marks is:20.0
            highest marks is:20.0
            highest marks is:20.0
            highest marks is:20.0
            highest marks is:20.0
            highest marks is:20.0
            highest marks is:20.0
            0
            1. void HighestMarks()
              	    {
              	    	
              	    	for(int j=0;j<RollNo;j++)
              	    	{
              	    	  for(int i=0;i<3;i++)
              	    	  {  
              	    		  if (sub1 > max1) 
              	    			  max1 = sub1;
              	    		  if(sub2>max2)
              	    			  max2=sub2;
              	    		  if(sub3>max3)
              	    			  max3=sub3;
              	    		  System.out.println(max1);
              	    	}
              	    	System.out.println("");
              

              en ecrivant ainsi le resultat est:
              ENTER YOUR CHOICE:
              4
              #2
              10.0
              10.0
              10.0

              *******Highest marks in each subject with roll no******
              14.0
              14.0
              14.0

              *******Highest marks in each subject with roll no******
              14.0
              14.0
              14.0

              *******Highest marks in each subject with roll no*****

              veuillez m'aidez svp
              0
              1. 
                void HighestMarks()
                	    {
                	    	for(int j=0;j<RollNo;j++)
                	    	{
                	    	  max=0;
                	    	  for(int i=0;i<3;i++)
                	    	  {
                	    		if (RollNo>max)
                	    		{
                	    			max1=RollNo;
                	    		}
                	    		
                	    	}

                il n'ya personne pour me aider
                où sont parti tous les génie informatique?
                0
                1. il n'y a personne pour m'aider svp
                  0
                  1. void HighestMarks()
                    	    {
                    	    	for(int i=0;i<3;i++)
                    	    	{
                    	    		if (sub1>max1)
                    	    		{
                    	    			max1=sub1;
                    	    		}
                    	    		if (sub2>max2)
                    	    		{
                    	    			max2=sub2;
                    	    		}
                    	    		if (sub3>max3)
                    	    		{
                    	    			max3=sub3;
                    	    		}
                    	    	}
                    	    	System.out.println("");
                    	    	System.out.println("*******Highest marks in each subject with roll no******");
                    	    	for(int i=0;i<?.length;i++)
                    	    	{
                    	    		
                    	    	}
                    

                    for(int i=0;i<;i++)
                    je ne sais pas comment remplir mon for < ?.length
                    veuillez m'aidez svp
                    0
                    1. j'ai ces variables à ma disposition
                      float HighMark_sub1;
                      float HighMark_sub2;
                      float HighMark_sub3;
                      float StudHightMark;
                      il faut que je commence avec for et if
                      for(int i=0;i<3;i++)
                      {
                      if( )
                      {

                      }
                      }
                      après j'hésite aidez moi
                      0
                      1. on a réussi pour display et total marks

                        maintenant je besoin vos conseil pour
                        -highest marks pour chaque sujet, et
                        -élève qui a reçu highest marks

                        pouvez vs me donnez quelque idées svp
                        0
                        1. j'ai fait comme vous m'avais conseillé
                          case 1:
                          	 for(int i=0; i<No_of_stud; i++)
                          	 {
                          	   //SMobj[i] = new StudMarks(i);
                          	   SMobj[i].getData();
                          	 }
                          	 break;
                          	 case 2:
                          	 System.out.printf("#%d\n",No_of_stud);
                          	 for(int i=0; i<No_of_stud; i++)
                          	{
                          	  SMobj[i] = new StudMarks(i);
                          	  SMobj[i].display();
                          	}
                                 break;
                          

                          mais il plante pour la premier choice
                          ENTER YOUR CHOICE:
                          1
                          java.lang.NullPointerException
                          at StudentDatabase.main(StudentDatabase.java:45)
                          0
                          1. Modérateur
                            Le truc c'est que tu ne comprends rien à ce que je t'explique !!!
                            C'est dans case 2 qu'il y a un problème, donc moi je te propose des solutions pour le case 2, mais toi tu laisses le case 2 identique et tu modifies le case 1, comment veux-tu que ça arrange quoi que ce soit ?

                            case 1:
                                for(int i=0; i<No_of_stud; i++)
                                {
                                    SMobj[i] = new StudMarks(i);
                                    SMobj[i].getData();
                                }
                                break;
                            
                            case 2:
                                for(int i=0; i<No_of_stud; i++)
                                {
                                    //SMobj[i] = new StudMarks(i);
                                    SMobj[i].display();
                                }
                                break;
                            0
                        2. je comprend toujours pas,excusez moi svp
                          alors quel est la solution svp
                          0
                          1. Modérateur
                            Enlèves cette ligne : SMobj[i] = new StudMarks(i); car elle modifie la valeur obtenue avec le getData dans le case 1. Cependant ce n'est pas aussi simple que ça, car le case 2 (et peut être d'autres) vont planter si le case 1 n'a pas été exécuté au moins une fois avant !
                            0
                        3. case 2:
                          	 System.out.printf("#%d\n",No_of_stud);
                          	 for(int i=0; i<No_of_stud; i++)
                          	{
                          	  SMobj[i] = new StudMarks(i);
                          	  SMobj[i].display();
                          	}
                          	 break;
                          

                          j'avais fait comme vs avez dit mais le résultat est le suivant
                          Enter number of students:2

                          Choose your choice....
                          1)PASS ENTRY
                          2)DISPLAY ALL RECORDS
                          3)DISPLAT TOTAL MARKS for all students
                          4)DISPLAT HIGHEST MARKS in each subject
                          5 DISPLAY student who recived highest total marks
                          6 Exit
                          ENTER YOUR CHOICE:
                          1

                          Recording Entry
                          Enter Roll No:
                          1
                          Roll No:1
                          Enter Marks for Subject 1:
                          11
                          Enter Marks for Subject 2:
                          12
                          Enter Marks for Subject 3:
                          13
                          TotalMarks36.0

                          Recording Entry
                          Enter Roll No:
                          2
                          Roll No:2
                          Enter Marks for Subject 1:
                          21
                          Enter Marks for Subject 2:
                          23
                          Enter Marks for Subject 3:
                          25
                          TotalMarks69.0

                          Choose your choice....
                          1)PASS ENTRY
                          2)DISPLAY ALL RECORDS
                          3)DISPLAT TOTAL MARKS for all students
                          4)DISPLAT HIGHEST MARKS in each subject
                          5 DISPLAY student who recived highest total marks
                          6 Exit
                          ENTER YOUR CHOICE:
                          2
                          #2

                          Displaying Record
                          Roll No:0
                          Subject 1:0.0
                          Subject 2:0.0
                          Subject 3:0.0
                          Total Marks:0.0

                          Displaying Record
                          Roll No:0
                          Subject 1:0.0
                          Subject 2:0.0
                          Subject 3:0.0
                          Total Marks:0.0

                          normalement il doit s'afficher comme suivant mais s'affiche pas pourquoi?
                          Displaying Record
                          Roll No:1
                          Subject 1:11.0
                          Subject 2:12.0
                          Subject 3:13.0
                          Total Marks:36.0

                          Displaying Record
                          Roll No:2
                          Subject 1:21.0
                          Subject 2:23.0
                          Subject 3:25.0
                          Total Marks:69.0
                          0
                          1. Modérateur
                            Parce que, comme je l'ai dit tout à l'heure, tu réinitialises les valeurs de ton tableau lors de l'appel du constructeur dans le case 2 alors qu'il faudrait conserver les valeurs du case 1 (en supposant que l'on choisisse le 1 avant le 2, ce qui n'est pas évident)
                            0
                        4.  case 2: 
                                for(int i=0; i<No_of_stud; i++) 
                                 { 
                                 SMobj[i] = new StudMarks(i); 
                                 SMobj[i].display(); 
                                 } 
                                break; 
                          

                          je les appelle ici vs voyes
                          0
                          1. Modérateur
                            Ici je ne vois que display(), pas TotalMarks(), et elle ne sera appelé que si l'on rentre dans la boucle, ce qui n'est pas le cas si No_of_Student<=0

                            Tu pourrais faire :

                            case 2:
                                System.out.printf("#%d\n",No_of_stud);
                                
                                for(int i=0; i<No_of_stud; i++)
                                {
                                    SMobj[i] = new StudMarks(i); 
                                    SMobj[i].display();
                                }
                                
                                break;

                            Cependant, si ton "case 2" est censé faire l'affichage, je ne vois pas pourquoi tu construis à nouveau SMobj[i] alors que le getData() est fait dans le "case 1", comme tu l'as fait, tu vas tout effacer !
                            0
                        5. La vérité est ailleurs...
                          

                          viens d' où, expliquez moi svp
                          0
                          1. Modérateur
                            Si tu exécutes ces méthodes elles fonctionneront, le problème vient donc que tu ne les appelles pas !!!
                            0
                        6. methode void display et void TotalMarks fonctionnent pas
                          aidez moi svp
                          void display()
                          	    {
                          	    	System.out.println("\nDisplaying Record");
                          	    	System.out.println("Roll No:"+RollNo);
                          	    	System.out.println("Subject 1:"+sub1);
                          	    	System.out.println("Subject 1:"+sub2);
                          	    	System.out.println("Subject 1:"+sub3);
                          	    	System.out.println("Total Marks:"+TotalMarks);
                          	    }
                          	    void TotalMarks()
                          	    {
                          	    	System.out.println("\nDisplaying Record");
                          	    	System.out.println("Roll No:"+RollNo);	
                          	    	System.out.println("Total Marks:"+TotalMarks);
                          	    }
                          
                          0
                          1. Modérateur
                            De toute évidence, le problème ne vient pas de ces deux méthodes ! La vérité est ailleurs...
                            0
                        7. j'ai corrigé mais le résultat n'es pas bon
                          import java.io.*;
                          public class StuDetail 
                          {
                            int RollNo;
                          }
                          class StudMarks extends StuDetail
                          {
                          	float sub1;
                          	float sub2;
                          	float sub3;
                          	float TotalMarks;
                          	StudMarks(int SMobj)
                          	{
                          		
                          	}
                          	
                          	void getData()
                          	{
                          		System.out.println("\nRecording Entry");
                          		try
                          		{
                          			BufferedReader obj=new BufferedReader(new InputStreamReader(System.in));
                          			String sRNo,sSub1,sSub2,sSub3;
                          			
                          			System.out.println("Enter Roll No:");
                          			System.out.flush();
                          			sRNo=obj.readLine();
                          			RollNo=Integer.parseInt(sRNo);
                          			
                          			System.out.println("Enter Marks for Subject 1:");
                          			System.out.flush();
                          			sSub1=obj.readLine();
                          			sub1=Float.parseFloat(sSub1);
                          			
                          			System.out.println("Enter Marks for Subject 2:");
                          			System.out.flush();
                          			sSub2=obj.readLine();
                          			sub2=Float.parseFloat(sSub2);
                          			
                          			System.out.println("Enter Marks for Subject 3:");
                          			System.out.flush();
                          			sSub3=obj.readLine();
                          			sub3=Float.parseFloat(sSub3);
                          			
                          			TotalMarks=sub1+sub2+sub3;
                          		}
                          		catch(Exception e)
                          		{}	
                          		}
                          	    void display()
                          	    {
                          	    	System.out.println("\nDisplaying Record");
                          	    	System.out.println("Roll No:"+RollNo);
                          	    	System.out.println("Subject 1:"+sub1);
                          	    	System.out.println("Subject 1:"+sub2);
                          	    	System.out.println("Subject 1:"+sub3);
                          	    	System.out.println("Total Marks:"+TotalMarks);
                          	    }
                          	    void TotalMarks()
                          	    {
                          	    	System.out.println("\nDisplaying Record");
                          	    	System.out.println("Roll No:"+RollNo);	
                          	    	System.out.println("Total Marks:"+TotalMarks);
                          	    }
                          	}
                          
                          


                          import java.io.BufferedReader;
                          import java.io.InputStreamReader;
                          public class StudentDatabase 
                          {
                          	public static void main(String []args)
                          	 {
                          		 System.out.println("\n======STUDENT DATABASE=====\n");
                          		 
                          		 float HighMark_sub1;
                          		 float HighMark_sub2;
                          		 float HighMark_sub3;
                          		 float StudHightMark;
                          		 int No_of_stud=3,choice;
                          		 String str;
                          		 char c;
                          		 
                          		 try
                          		 {
                          			BufferedReader obj=new BufferedReader(new InputStreamReader(System.in));
                          			System.out.print("\nEnter number of students:");
                          			System.out.flush();
                          			str=obj.readLine();
                          			No_of_stud=Integer.parseInt(str);
                          			StudMarks SMobj[]=new StudMarks[No_of_stud];
                          			while(true)
                          			{
                          				System.out.println("\nChoose your choice....");
                          				System.out.println("1)PASS ENTRY");
                          				System.out.println("2)DISPLAY ALL RECORDS");
                          				System.out.println("3)DISPLAT TOTAL MARKS for all students");
                          				System.out.println("4)DISPLAT HIGHEST MARKS in each subject");
                          				System.out.println("5 DISPLAY student who recived highest total marks");
                          				System.out.println("6 Exit");
                          				System.out.println("ENTER YOUR CHOICE:");
                          				System.out.flush();
                          				str=obj.readLine();
                          				choice=Integer.parseInt(str);
                          				
                          				switch(choice)
                          				{
                          				 case 1:
                          					 for(int i=0; i<No_of_stud; i++)
                          					 {
                          					 SMobj[i] = new StudMarks(i);
                          					 SMobj[i].getData();
                          					 }
                          					 break;
                          				 case 2:
                          					 for(int i=0; i<No_of_stud; i++)
                          						 {
                          						 SMobj[i] = new StudMarks(i);
                          						 SMobj[i].display();
                          						 }
                          					 break;
                          				 case 3:
                          					 for(int i=0; i<No_of_stud; i++)
                          					 {
                          						 SMobj[i] = new StudMarks(i);
                          						 SMobj[i].TotalMarks();
                          					 }
                          					 break;
                          				 case 4:break;
                          				 case 5:break;
                          				 case 6:System.out.println("\nThanks for visting.....");
                          				 System.exit(1);	 
                          				}
                          			} 
                          		 }
                          		 catch(Exception e)
                          		 { e.printStackTrace();}
                          	 }
                          }
                          
                          ======STUDENT DATABASE=====
                          
                          
                          Enter number of students:3
                          
                          Choose your choice....
                          1)PASS ENTRY
                          2)DISPLAY ALL RECORDS
                          3)DISPLAT TOTAL MARKS for all students
                          4)DISPLAT HIGHEST MARKS in each subject
                          5 DISPLAY student who recived highest total marks
                          6 Exit
                          ENTER YOUR CHOICE:
                          1
                          
                          Recording Entry
                          Enter Roll No:
                          10
                          Enter Marks for Subject 1:
                          3
                          Enter Marks for Subject 2:
                          4
                          Enter Marks for Subject 3:
                          5
                          
                          Recording Entry
                          Enter Roll No:
                          11
                          Enter Marks for Subject 1:
                          2
                          Enter Marks for Subject 2:
                          4
                          Enter Marks for Subject 3:
                          5
                          
                          Recording Entry
                          Enter Roll No:
                          12
                          Enter Marks for Subject 1:
                          6
                          Enter Marks for Subject 2:
                          7
                          Enter Marks for Subject 3:
                          8
                          
                          Choose your choice....
                          1)PASS ENTRY
                          2)DISPLAY ALL RECORDS
                          3)DISPLAT TOTAL MARKS for all students
                          4)DISPLAT HIGHEST MARKS in each subject
                          5 DISPLAY student who recived highest total marks
                          6 Exit
                          ENTER YOUR CHOICE:
                          2
                          
                          Displaying Record
                          Roll No:0
                          Subject 1:0.0
                          Subject 1:0.0
                          Subject 1:0.0
                          Total Marks:0.0
                          
                          Displaying Record
                          Roll No:0
                          Subject 1:0.0
                          Subject 1:0.0
                          Subject 1:0.0
                          Total Marks:0.0
                          
                          Displaying Record
                          Roll No:0
                          Subject 1:0.0
                          Subject 1:0.0
                          Subject 1:0.0
                          Total Marks:0.0
                          
                          Choose your choice....
                          1)PASS ENTRY
                          2)DISPLAY ALL RECORDS
                          3)DISPLAT TOTAL MARKS for all students
                          4)DISPLAT HIGHEST MARKS in each subject
                          5 DISPLAY student who recived highest total marks
                          6 Exit
                          ENTER YOUR CHOICE:
                          3
                          
                          Displaying Record
                          Roll No:0
                          Total Marks:0.0
                          
                          Displaying Record
                          Roll No:0
                          Total Marks:0.0
                          
                          Displaying Record
                          Roll No:0
                          Total Marks:0.0
                          
                          Choose your choice....
                          1)PASS ENTRY
                          2)DISPLAY ALL RECORDS
                          3)DISPLAT TOTAL MARKS for all students
                          4)DISPLAT HIGHEST MARKS in each subject
                          5 DISPLAY student who recived highest total marks
                          6 Exit
                          ENTER YOUR CHOICE:
                          
                          0
                          • 1
                          • 2