Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur "String index out of range: 0"

Sujet résolu
Anonyme
    8 septembre 2016 à 17:18:17

    Yo les gens :)

    En travaillant sur le TP du cours sur java, une malheureuse erreur fit son apparition juste alors que je venais de mettre les dernière touches sur mon bout de code : 

    import java.util.*;
    
    public class qrs1 {
    
    	public static void main(String[] args) {
    		
    		System.out.println("-*-*-*-Bienvenue dans le programme de conversion CELSIUS - FAHRENHEIT-*-*-*-\n");
    		
    		Scanner src = new Scanner (System.in);
    		char reTry = ' ';
    		
    		do {
    			System.out.println("Choisissez un mode de conversion : (MAJ)\nA.CELSIUS -> FAHRENHEIT\nB.FAHRENHEIT -> CELSIUS"); 
    	
    			char modeConversion = src.nextLine().charAt(0);
    	 
    			while (modeConversion != 'A' && modeConversion != 'B'){
    				System.out.println("Entrez une valeur correcte :");
    				modeConversion = src.nextLine().charAt(0);
    			}
    		
    			int valeurConvertir, resultat;
    		
    			if (modeConversion == 'A') {
    				System.out.println("Entrez la valeur a convertir :");
    				valeurConvertir = src.nextInt();
    				resultat = (valeurConvertir*9)/5 + 32;
    				System.out.println(valeurConvertir + "°C corespond a " + resultat + "°F" );
    			}
    			else {
    				System.out.println("Entrez la valeur a convertir :");
    				valeurConvertir = src.nextInt();
    				resultat = ((valeurConvertir-32)*5) / 9;
    				System.out.println(valeurConvertir + "°F corespond a " + resultat + "°C" );
    			}
    		
    			System.out.println("Voulez vous reessayer ? (O/N)");
    			reTry = src.nextLine().charAt(0);
    		
    			while (reTry != 'O' && reTry != 'N'){
    				System.out.println("Entrez une valeur correcte :");
    				src.nextLine();
    				reTry = src.nextLine().charAt(0);
    			}
    		
    		}while(reTry != 'N');
    	}
    
    }
    

    Voici l'erreur en général :

    Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
    	at java.lang.String.charAt(Unknown Source)
    	at qrs1.main(qrs1.java:38)

    Un peu d'aide sera la bienvenue :D

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      8 septembre 2016 à 21:27:36

      Salut,

      
      src.nextLine().charAt(0)
      
      

      L'entrée standard est vide.

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        8 septembre 2016 à 21:50:54

        Ah oui, erreur de placement du src.nextLine(); :honte:

        Erreur résolu, merci pour ton aide _SongBird_

        • Partager sur Facebook
        • Partager sur Twitter
          24 janvier 2017 à 18:38:00

          Bonjour,

          Je suis le même tutoriel que toi et dans ce même TP, j'ai eu ce même problème mais je n'ai pas vraiment compris comment tu l'as résolu, pourrais-tu m'expliquer cela plus en détail ?

          • Partager sur Facebook
          • Partager sur Twitter
            25 janvier 2017 à 15:41:14

            Tu as du appuyer sur "entrée" sans rentrer de valeur à la question "Voulez-vous réessayer ? (O/N)"

            PS: n'oublie pas de fermer le Scanner après la boucle avec "src.close();"
            • Partager sur Facebook
            • Partager sur Twitter
              24 mars 2019 à 2:17:50

              Bonjour a tous,

              aujourdui je rencontre le meme problem mais ne comprend pas comment vous l'avez resolu.

              quelqu'un pourrait il m'aider?Merci d'avance.

              • Partager sur Facebook
              • Partager sur Twitter
                24 mars 2019 à 11:44:09

                Bonjour,

                Voilà l'extrait du cours sur les entrées clavier qui détaille cette erreur :

                Une précision s'impose, toutefois : la méthode nextLine() récupère le contenu de toute la ligne saisie et replace la « tête de lecture » au début d'une autre ligne. Par contre, si vous avez invoqué une méthode comme nextInt()nextDouble() et que vous invoquez directement après la méthode nextLine(), celle-ci ne vous invitera pas à saisir une chaîne de caractères : elle videra la ligne commencée par les autres instructions. En effet, celles-ci ne repositionnent pas la tête de lecture, l'instruction nextLine() le fait à leur place.

                voir cours ici : https://openclassrooms.com/fr/courses/26832-apprenez-a-programmer-en-java/20615-apprenez-a-lire-les-entrees-clavier

                En gros, il faut vider la ligne avec l'instruction "src.nextLine();" lorsqu'on a utilisé la méthode nextInt() ou nextDouble() juste avant et qu'on veut utiliser nextLine().

                il faut donc corriger cette partie du code en rajoutant "src.nextLine();" :

                System.out.println("Voulez vous reessayer ? (O/N)");
                            src.nextLine();
                            reTry = src.nextLine().charAt(0);



                • Partager sur Facebook
                • Partager sur Twitter
                  25 mars 2019 à 15:00:02

                  Merci beucoup pour votre reponse,

                  jai trouvrer la solution en relisant le cours dernierement et en lisant et à force de chercher j'ai proceder comme suit et ca a marcher:

                  if(scr.nextLine().chartAt(0) == 0 ){

                  char carac = scr.nextLine().charAt(0)

                  }

                  Merci encore pour votre reponse!

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Erreur "String index out of range: 0"

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown