web-dev-qa-db-fra.com

Comment utiliser un caractère comme cas dans un commutateur?

Comment utiliser un personnage dans un commutateur? Je vais recevoir la première lettre de ce que l'utilisateur saisira.

import javax.swing.*;

public class SwitCase {
    public static void main (String[] args){
        String hello="";
        hello=JOptionPane.showInputDialog("Input a letter: ");
        char hi=hello;
        switch(hi){
            case 'a': System.out.println("a");
        }
    }   
}
9
Zhianc
public class SwitCase {
    public static void main (String[] args){
        String hello = JOptionPane.showInputDialog("Input a letter: ");
        char hi = hello.charAt(0); //get the first char.
        switch(hi){
            case 'a': System.out.println("a");
        }
    }   
}
20
Pablo Fernandez

charAt obtient un caractère d'une chaîne que vous pouvez activer, car char est un type entier.

Donc, pour allumer la première char dans la Stringhello,

switch (hello.charAt(0)) {
  case 'a': ... break;
}

Sachez cependant que Java chars ne correspond pas un à un aux points de code. Voir codePointAt pour un moyen d'obtenir de manière fiable un seul point de code Unicode.

7
Mike Samuel

Comme ça. Sauf que char hi=hello; devrait être char hi=hello.charAt(0). (N'oubliez pas vos déclarations break;).

0
Jeffrey

L'utilisation d'un caractère lorsque la variable est une chaîne ne fonctionnera pas. En utilisant

switch (hello.charAt(0)) 

vous allez extraire le premier caractère de la variable-hello au lieu d'essayer de l'utiliser telle quelle, sous forme de chaîne. Vous devez également vous débarrasser de votre espace intérieur 

case 'a '
0
Arj

Voici un exemple:

public class Main {

    public static void main(String[] args) {

        double val1 = 100;
        double val2 = 10;
        char operation = 'd';
        double result = 0;

        switch (operation) {

            case 'a':
                result = val1 + val2; break;

            case 's':
                result = val1 - val2; break;
            case 'd':
                if (val2 != 0)
                    result = val1 / val2; break;
            case 'm':
                result = val1 * val2; break;

            default: System.out.println("Not a defined operation");


        }

        System.out.println(result);
    }
}
0
Revanth