我正在尝试让程序根据卡号的第一位在屏幕上打印卡类型。该程序可以正常编译并运行,但它不会将卡类型声明显示到屏幕上。我确信这只是一个简单的修复,但我花了几个小时试图发现它可能是什么。我在这里缺少什么?
public static void main (String [] args ) {
System.out.println ( "Please enter your credit card number without spaces." );
Scanner keyIn = new Scanner ( System.in );
long ccNum = keyIn.nextLong ();
String cNum = ccNum + "";
switch ( cNum.charAt ( 0 ) )
{
case 4:
System.out.println ( "The card is a Visa" );
break;
case 5:
System.out.println ( "The card is a MasterCard" );
break;
case 6:
System.out.println ( "The card is a Discover Card" );
break;
case 37:
System.out.println ( "The card is an American Express Card" );
break;
}
}
最佳答案
charAt
返回一个 char
,您将其与其面值表示的 int 进行比较。即,您应该使用 '4'
、'5,而不是
和 4
、5
和 6
''6'
。另请注意,“37”是两个字符,因此您不能只评估第一个字符。相反,您可以使用 String.startsWith(String)
以及一系列 if-else 条件:
if (cNum.startsWith("4")) {
System.out.println ( "The card is a Visa" );
} else if (cNum.startsWith("5")) {
System.out.println ( "The card is a MasterCard" );
} else if (cNum.startsWith("6")) {
System.out.println ( "The card is a Discover Card" );
} else if (cNum.startsWith("37")) {
System.out.println ( "The card is an American Express Card" );
}
关于java - Case 语句代码不显示在屏幕上,但符合且没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46617904/