Problème de String qui ne se met pas à jour

Résolu
Nonnonnon Messages postés 5 Statut Membre -  
KX Messages postés 19031 Statut Modérateur -
Bonjour. J'ai commencé la programmation java il y a une semaine. En regardant ça et là sur internet je me débrouille plus ou moins mais là je bloque:

string1 c'est une string tapée par l'utilisateur ça pas de problème.
string s c'est la string voulue.

String s = null;
char c = string1.charAt(4);
switch(c){
case 0:s="a"; break;
case 1:s="b"; break;
case 2:s="c"; break;
case 3:s="d"; break;
case 4:s="e"; break;
case 5:s="f"; break;
case 6:s="g"; break;
case 7:s="h"; break;
case 8:s="i" ; break;
case 9:s="j"; break;
}

System.out.println(s);
Et là string s n'a pas pris la valeur entre temps et tout ce qui est "print" c'est un horrible "null" POURQUOI ? moi je veux une lettre !
aidez moi svp je ne comprends pas.
Merci d'avance !

2 réponses

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    Bonjour,

    Quelle est la valeur de string1 ? Affiches c pour voir... mais il y a peu de chances qu'il soit égal aux caractères de 0 à 9 qui sont pour la plupart non affichables. Je pense que tu as confondus avec les caractères '0' à '9' :

    switch (c) {
    case '0':
        s = "a";
        break;
    case '1':
        s = "b";
        break;
    case '2':
        s = "c";
        break;
    ...
    }

    La confiance n'exclut pas le contrôle
    1
  2. Nonnonnon Messages postés 5 Statut Membre
     
    Bonjour kx. String1 est donnée par un scanner(system.in) . Je crois que tu as trouvé le problème qui vient des ' ' que j'avais pas mis. Je teste demain avec les ' ' . Merci !

    Ps: si j'ai bien compris c'est juste des guillemets pour char ?
    0
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      "des guillemets pour char"
      En quelque sorte. Parce que 0, 1, 2... ce sont des int. Rien à voir avec '0', '1', '2' qui sont des char.
      Il y a une conversion implicite entre char et int, basée sur leur valeur Unicode.

      Par exemple : le caractère '9' a pour valeur entière 57, alors que la valeur entière 9 correspond au caractère '\t' (la tabulation). Confondre les deux entraînera forcément des erreurs !

      Voir : Code ASCII
      0