为什么说方法nextInt未定义并且大小写“ A”是类型未命中匹配错误

时间:2019-02-13 21:59:24

标签: java eclipse

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;
    }
}

3 个答案:

答案 0 :(得分:2)

这里有多个问题。首先,你的那行说

testHook(() => ({count, increment} = useCounter({ initialCount: 2 })))

应改为

totalHours = input.nextInt()

第二,您从未读过任何有关程序包类型的用户输入,因此totalHours = keyboard.nextInt() 始终为packageLetter

但是,与您看到的特定错误相关的问题是,您的switch语句正在打开0,这是一个packageLetter,但您的情况是在{{ 1}},即char。这些数据必须是相同的数据类型,因此您需要将"A"更改为String,或将大小写更改为:

packageLetter

在Java中,Stringcase 'A': // <-- Notice the single quotes ,但是"A"String

答案 1 :(得分:1)

您的代码有几个问题:

  • 您将input声明为String,但从未为其分配任何值,因此它是null
  • String没有nextInt()类的Scanner方法
  • 您实际上并没有使用Scanner对象。我相信您提到了这一点:keyboard.nextInt()
  • switch语句在抱怨,因为您没有定义default案例
  • 此外,packageLetterchar,而您正尝试将其与String进行匹配-在Java中,'A'char,{ {1}}是"A"

答案 2 :(得分:0)

由于packageLetter是单个字符,因此您需要在文字上使用单引号:

...
switch(packageLetter)
{

case 'A' :  // Note single quotes.
...

这应该可以解决类型不匹配的错误,但是您也需要解决点Óscar López's points out才能使代码正常工作。