只是为了澄清这是hw。
在我们正在进行的项目中,不允许用户输入数字或特殊字符(即!@£等)
char letter;
String phonetic;
Scanner kb = new Scanner(System.in);
System.out.print("Please enter a letter: ");
letter = letter = kb.next().charAt(0);
switch(Character.toUpperCase(letter))
{
case 'A':
{
Dot();
Dash();
Red();
}
break;
case '1,2,3,4,5,6,7,8,9,0':
{
System.out.println('No number input please!');
}
break;
}
错误已开启
'1,2,3,4,5,6,7,8,9,0'
Eclipse说
invalid character constant
如果我必须手动输入所有数字,是不是真的很长?
即。案例'1':案例'2':
即使
case 1,2,3,4,5,6,7,8,9,0:
它无效。
使用switch语句有没有更短的方法?
谢谢!
答案 0 :(得分:3)
因为Case表达式应该是来自 java 7 的int-compatible literal
或String
。
case '1,2,3,4,5,6,7,8,9,0':
字符文字用单引号表示。 c
,它应该只有一个长度,而你的情况不会反映出来,因此错误。
'1,2,3,4,5,6,7,8,9,0' this is not a legal character.
如果您只是想检查角色是否只是字母,请在切换开始前使用Charcter#isDigit(char)或Charcter#isLetter,如下面的代码所示:
char ch= (Character.toUpperCase(letter);
if(!Character.isDigit(ch)) {
switch(Character.toUpperCase(letter))
{
case 'A':
{
Dot();
Dash();
Red();
}
break;
}
}
else {
System.out.println("no numbers please")
}
答案 1 :(得分:2)
使用案例没有更简单的方法,那么?:
if ('0' <= letter && letter <= '9')
System.out.println('No number input please!');
答案 2 :(得分:1)
不,这种情况下的Java并不像C#那样聪明。你需要为此写多行。如果要比较字符串,则需要使用if
语句。还记得使用此代码进行比较:
if("search".equals(string2)) {...}
您无法通过==
进行比较,这只会比较内存地址。另请注意,我在静态字符串上使用等号,而不是在变量string2
上使用等号,因为如果string2
为空,则代码会中断。
答案 3 :(得分:1)
如果我必须手动输入所有数字,是不是真的很长?
是
使用switch语句有更短的方法吗?
没有
考虑使用if
语句......
答案 4 :(得分:0)
我希望这更能启发你。
请注意,您的表达式会将输出生成为A , B, C, D, E, F, G, H, I, ...till Z
。并且你想为它们执行相同的方法/功能。
然后,您可以检查字符的ascii
值并修改代码以使用if
和for
循环,或者使用程序中提到的switch
以下示例程序。
使用代码来了解更多信息。
public class SwitchClass
{
public void method1()
{
System.out.println("Menthod 1");
}
public void method2()
{
System.out.println("Menthod 2");
}
public void method3()
{
System.out.println("Menthod 3");
}
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
SwitchClass sw = new SwitchClass();
System.out.println("Enter the String:");
String input = in.next();
for(int i = 0; i<input.length(); i++)
{
switch(Character.toUpperCase(input.charAt(i)))
{
case 'A':
case 'B':
case 'C':
case 'U':
System.out.println(Character.toUppercase(input.charAt(i))+" Case calling");
sw.method1();
sw.method2();
sw.method3();
break;
default:
System.out.println("No number input please!");
break;
}
}
}
}