public static void main(String[] args) {
// TODO Auto-generated method stub
char packageLetter = 0;
int totalHours, regularHours, additionalHours=0;
double monthlyFee, additionalHoursFee, totalFee;
String input;
Scanner keyboard = new Scanner(System.in);
System.out.print("Enter the your's package (A, B, or C)");
System.out.print("How many hours did you used?");
totalHours = input.nextInt();
switch(packageLetter)
{
//it says I have a miss match error here
case "A" :
monthlyFee = 9.95;
regularHours = 10;
additionalHoursFee = additionalHours * 2;
totalFee = monthlyFee + additionalHoursFee;
System.out.print("The charges are $: " + totalFee);
System.out.print("With package B you would have saved" + (totalFee - 13.95));
break;
}
}
答案 0 :(得分:2)
这里有多个问题。首先,你的那行说
testHook(() => ({count, increment} = useCounter({ initialCount: 2 })))
应改为
totalHours = input.nextInt()
第二,您从未读过任何有关程序包类型的用户输入,因此totalHours = keyboard.nextInt()
始终为packageLetter
。
但是,与您看到的特定错误相关的问题是,您的switch语句正在打开0
,这是一个packageLetter
,但您的情况是在{{ 1}},即char
。这些数据必须是相同的数据类型,因此您需要将"A"
更改为String
,或将大小写更改为:
packageLetter
在Java中,String
是case 'A': // <-- Notice the single quotes
,但是"A"
是String
。
答案 1 :(得分:1)
您的代码有几个问题:
input
声明为String
,但从未为其分配任何值,因此它是null
String
没有nextInt()
类的Scanner
方法Scanner
对象。我相信您提到了这一点:keyboard.nextInt()
switch
语句在抱怨,因为您没有定义default
案例packageLetter
是char
,而您正尝试将其与String
进行匹配-在Java中,'A'
是char
,{ {1}}是"A"
答案 2 :(得分:0)
由于packageLetter
是单个字符,因此您需要在文字上使用单引号:
...
switch(packageLetter)
{
case 'A' : // Note single quotes.
...
这应该可以解决类型不匹配的错误,但是您也需要解决点Óscar López's points out才能使代码正常工作。