Erreur d’exécution du code Java
Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

Erreur d’exécution du code Java



  1. #1
    saniadaff

    Erreur d’exécution du code Java


    ------

    Bonsoir tout le monde;

    J'ai un code j'ava qui calcule ma formule sur les nombres premiers;
    Je viendrais après pour publier la démonstration sur ce forum en d'une discussion serine

    q=div1(2n+1) ; si q=1 ⇒b=q ; fin de calcul ; sinon q=div1(2n+q) ; b=q ; jusqu’à q=1 et b égale à l’avant dernière valeur de q ;
    P(n)=2n+b;
    ça existe sur d'autre plate-forme:
    pour comprendre l'algo voici la trace:
    n=16 ;q=div1(2x16+1) ; q= div1(33) ⇒q=3 !=1 b=3 ;q=div1(2x16+3)=div1(32+3)= div1(35)=5 !=1 ; b=5 ;
    q=div1(32+5)= div1(37)=1 ; q=1 fin
    P(n)=2n+b;
    P(16)=2x16+5; ⇒P(16)=37 ;

    Mais il y aussi des rangs n qui n'ont aucune correspondance qu'il faut sortir dans l'algo avec p=0 ; qui est normale

    n=37 ; q=div1(2x37+1) ; q= div1(75) ⇒q=3 !=1 b=3 ;q=div1(2x37+3)=div1(74+3)= div1(77)=7 !=1 ; b=7 ; q= div1(74+7)= div1(81)=3 ; q !=1 fin
    Donc ici on entre dans une boucle infinie

    l’accès au élément du tableau k me fait tourner en rond mais sans faire des commentaires, voici le code :
    Code:
    package Premier;
    import java.util.*;
     
    public class Premier {
         
             
                public static void main(String[] args) {
                    Premier P1 = new Premier();
                    @SuppressWarnings("resource")
                    Scanner keby = new Scanner(System.in);             
                    int s=0;
                    System.out.println("Veuillez saisir un rang n :");
                    s=keby.nextInt();
                    System.out.printf("P : %d \n", +P1.Formule2(s));
                     
                }
                 
                 public int Div1 (int n) {
                 
                int i =2;
                 
                int d=n-1 ;
                 
                int div=1; 
                 
                                 
                 while ((i<d) && ((n) % (i) != 0)) {
                      
                                      
                    if ((n) % (i) ==0) {
                         
                        div = i  ;            
                         
                     }
                     
                     i =i+1 ;
                     
                }
                  
                 if ((n) % (i) ==0) {
                        div = i  ;
                         
                       }
                 
                return div;
            }
                  
                public int Formule2 (int n){
                 
                int i=0;
                int r=0;
                int control = 2 * n + 1 ;  
                int Q = Div1(2 * n + 1);
                int b = Q;
                int sortie = 0;
                ArrayList<Integer> K= new ArrayList<Integer> ();
                K.add(control);
                  
                 
                while ((Q!=1) && (sortie == 0)) {
                  
                     b = Q ;
                    Q = Div1(2 * n + Q);
                    control=2 * n + Q;
                   
                    r=K.size();
                    
                    while ((i<r) && (control != K.get(i) )) {   
                      
                        i=i+1;
                    }          
                     
                    /*System.out.printf("element : %d \n", + K.get(i));*/
                   
                    if (control== K.get(i) ) {
                    
                        sortie = sortie + 1;
                                 
                       } else{
                           K.add(2 * n + Q);
                       }         
                      
                }
                 
                if ((Q!=1) && (sortie == 1) ){
                     
                    return 0;
                }
                         else {
                          
                return (2 * n + b);
                }
                }
    voici le code d'erreur:

    Veuillez saisir un rang n :

    16

    Exception in thread "main" java.lang.IndexOutOfBoundsExce ption: Index: 1, Size: 1

    at java.util.ArrayList.rangeCheck (Unknown Source)

    at java.util.ArrayList.get(Unknow n Source)

    at Premier.Premier.Formule2(Premi er.java:75)

    at Premier.Premier.main(Premier.j ava:14)

    il n’accède pas cette partie du code

    if (control== K.get(i) ) {

    Merci d'avance pour votre aide

    -----
    Dernière modification par Jack ; 11/04/2022 à 12h23. Motif: Ajout balises code

  2. #2
    vgondr98

    Re : Erreur d’exécution du code Java

    Tu peux utiliser la balise [CODE] pour mettre ton code.
    Sinon remplace
    Code:
    if (control== K.get(i) ) {
    par
    Code:
    if (K.size() < i && control== K.get(i) ) {
    ou un truc du genre pour éviter l'erreur de java.lang.IndexOutOfBoundsExce ption

  3. #3
    saniadaff

    Re : Erreur d’exécution du code Java

    je vois pas ou prendre la balise
    Merci ça passe!
    Je veux maintenant tester pour des grande valeurs:1.000.000.000.000.000 etc..pour l'instant ça accepte avec 1.000.000.000
    Volà le problème:
    [CODE]
    1000000000000
    Exception in thread "main" java.util.InputMismatchExcepti on: For input string: "1000000000000"
    at java.util.Scanner.nextInt(Unkn own Source)
    at java.util.Scanner.nextInt(Unkn own Source)
    at Premier.Premier.main(Premier.j ava:13)

    [CODE]

    j'ai changé avec le Long mais pas de changement:

    Code:
    package Premier;
    import java.util.*;
    
    public class Premier {
    	
    		
    			public static void main(String[] args) {
    				Premier P1 = new Premier(); 
    				@SuppressWarnings("resource")
    				Scanner keby = new Scanner(System.in);			    
    				long s=0;
    		        System.out.println("Veuillez saisir un rang n :");
    		        s=keby.nextInt();
    		        System.out.printf("P : %d \n", +P1.Formule2(s));
    		        
    		    }
    			
    			 public long Div1 (long n) {
    			
    				 long i =2;
    			
    				 long d=n-1 ;	
    			
    				 long div=1;	
    			
    			 				
    			 while ((i<d) && ((n) % (i) != 0)) {
    				 
    				 				 
    				if ((n) % (i) ==0) {
    					
    				    div = i  ;			   
    				    
    				 }
    				
    				 i =i+1 ;
    				
    			}
    			 
    			 if ((n) % (i) ==0) {
    				    div = i  ;
    				    
    				   }
    			
    			return div;
    		}
    			 
    			public long Formule2 (long n){
    								
    				int i=0;
    				long r=0;
    				long control = 2 * n + 1 ;	
    				long Q = Div1(2 * n + 1); 
    				long b = Q;
    				long sortie = 0;
    			ArrayList<Long> K= new ArrayList<Long> ();
    			K.add(control);
    						 
    			while ((Q!=1) && (sortie == 0)) {
    			 
    			     b = Q ;
    			     control=2 * n + Q;
    			     Q = Div1(2 * n + Q);		  
    			     r=K.size();
    			   
    			   while (i<r)  {	
    			    	
    			    	     if (control== K.get(i) ) {
    					    	
    					    	sortie = sortie + 1;	               
    		                  
    		                  }         
    			     
    			    	         i=i+1;
    			              }	
    			    
    			    
    			    K.add(2 * n + Q);			 
    			
    			}
    			
    			
    		if ((Q!=1) && (sortie == 1) ){
    				
    				return 0;
    		}
    					 else {
    					 
    		return (2 * n + b);
    			
    				      }
    		
    			
    		}						
    
    }
    Dernière modification par Jack ; 11/04/2022 à 16h04. Motif: Correction balise code fermante

  4. #4
    vgondr98

    Re : Erreur d’exécution du code Java

    Ton erreur vient de la : s=keby.nextInt();
    En effet, il semblerait que le scanner ne puisse pas transformer des nombres trop grands en entier.
    Essaye avec s=keby.nextLong();

  5. A voir en vidéo sur Futura
  6. #5
    pm42

    Re : Erreur d’exécution du code Java

    1) apprendre comment fonctionnent les balises CODE, ne pas se contenter de mettre un truc au hasard, de voir que le message n'est pas formaté et de laisser comme ça.

    2) Ca marche avec des long mais comme tu n'as pas posté le code avec, on ne sait pas si tu as adapté le Scanner

    Bref, faire un effort, ça aide.

  7. #6
    umfred

    Re : Erreur d’exécution du code Java

    [ code] mon code [ /code] (sans les espaces dans la balise)

  8. #7
    Merlin95

    Re : Erreur d’exécution du code Java

    Je me suis arrêté là :

    Code:
    public int Div1 (int n) {
                 
                int i=2;
                 
                int d=n-1;
                int div=1; 
                                 
                 while ((i<d) && ((n) % (i) != 0)) {
                                      
                    if ((n) % (i) ==0) {
                        div = i ;
                     }
           
                     i =i+1;
                }
                  
                 if ((n) % (i) ==0) {
                        div = i  ;
                 }
                 
                return div;
    }
    Dans le while, il y a le test
    Code:
    ((n) % (i) != 0)
    et après tu écris :

    Code:
    if((n) % (i) == 0)
    qui ne sert à rien puisqu'à ce moment là on sait justement sue
    Code:
    ((n) % (i) != 0)
    Du coup, je n'ai pas compris ce que tu cherchais à faire avec cette méthode Div1.

    Sinon tu devrais mettre fes commentaires dans ton code, on sait pas trop ce que "çà fait" (et accessoirement, tu ne respectes pas trop les normes de langage préconisées).

  9. #8
    saniadaff

    Re : Erreur d’exécution du code Java

    merci ça marche!

  10. #9
    saniadaff

    Re : Erreur d’exécution du code Java

    ah ça alors!
    ((n) % (i) != 0)
    l'algo était monté à ma tête


    Du coup, je n'ai pas compris ce que tu cherchais à faire avec cette méthode Div1.
    Je reviens!!

    Je vais faire d'ici quelle que heures une autre publication concernant la formule dans la rubrique mathématique et le titre sera : Essai sur les nombres premiers;
    consulter en attendant cette page:https://www.developpez.net/forums/d2.../#post11832394
    Je suis en jeun, c'est difficile de procéder à la correction et publier maintenant

  11. #10
    saniadaff

    Re : Erreur d’exécution du code Java

    Je n'ai pas pu le publier car le texte est trop long

Discussions similaires

  1. Exécution d'une programme Java sur Mac
    Par kilwa dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 13/02/2014, 10h09
  2. [Java] Probleme lors de l'exécution du .jar
    Par Ben017 dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 10/12/2012, 20h36
  3. Problème exécution de l'application java
    Par invite71539000 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 09/08/2010, 13h14
  4. Problème d'exécution JAVA
    Par Nico G. dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 29/11/2005, 09h31
  5. Erreur d'execution de fichier .ocx
    Par invite211c1e0b dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 24/10/2004, 19h22