В настоящее время вы не можете switch
на String
. В спецификации языка ясно, на что вы можете 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"