используя переключатель в строках - PullRequest
2 голосов
/ 29 мая 2010

Попытка использовать switch в строках, сначала закрывая строку в char, а затем применяя switch, но все же не сделала этого .... вот мой код ..

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import javax.swing.JOptionPane;

class HappyBirthday {

    public static void main(String[] args) throws IOException {
        String Month;
        char[] Months = Month.toCharArray();
        BufferedReader dataIn = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Please enter your month.");

        Month = JOptionPane.showInputDialog("enter month");
        String month1 = { "January", "feb"};
        char[] month2 = month1.toCharArray();

        // String s=month1.equals(Month);
        // System.out.print(month2Array[0]);
        switch (month2) {

        case 0:
            System.out.println("kool");
            break;

        case 1:
            System.out.println("not kool");
            break;
        default:
        }
    }
}
/**
 * if (month1[1].equals(Month)) System.out.println("kool"); else
 * if(month1[0].equals(Month)) System.out.println("kooooooooooooool"); else
 * System.out.println("Big kooooool");
 **/

Ответы [ 4 ]

4 голосов
/ 29 мая 2010

Взгляните на эту отличную статью на эту тему.

1 голос
/ 29 мая 2010

В настоящее время вы не можете switch на String. В спецификации языка ясно, на что вы можете switch:

JLS 14.11 switch оператор

SwitchStatement:
      switch ( Expression ) SwitchBlock

Тип Expression должен быть char, byte, short, int, Character, Byte, Short, Integer или enum , или ошибка времени компиляции.

В зависимости от того, что вы хотите сделать, вы можете switch на каждом char из String:

    String s = "Coffee, tea, or me?";
    int vowelCount = 0;
    int punctuationCount = 0;
    int otherCount = 0;
    for (char letter : s.toUpperCase().toCharArray()) {
        switch (letter) {
            case 'A': 
            case 'E':
            case 'I':
            case 'O':
            case 'U':
                vowelCount++;
                break;
            case ',':
            case '.':
            case '?':
                punctuationCount++;
                break;
            default:
                otherCount++;
        }
    }
    System.out.printf("%d vowels, %d punctuations, %d others",
        vowelCount, punctuationCount, otherCount
    ); // prints "7 vowels, 3 punctuations, 9 others"
1 голос
/ 29 мая 2010

Обратите внимание, что переключение на строки будет поддерживаться в Java 7.

0 голосов
/ 29 мая 2010

Вы не можете включить тип char []. Включите char [0] и используйте case 'J': и т. Д. (Хотя - поскольку некоторые месяцы начинаются с одной и той же буквы, алгоритм будет неоптимальным)

...