在switch case中的if语句中没有语句错误

时间:2014-03-11 12:12:45

标签: java if-statement switch-statement

我的问题出现在if语句中 - 如果变量"小时"大于10,我希望将额外的小时乘以2.00并将结果加9.95,但我在编译时收到错误,我不明白为什么。任何帮助深表感谢。

    String choice;

    double hours;

    Scanner input = new  Scanner(System.in);

    System.out.print("Enter which package you are using A, B or C? ");
    choice = input.nextLine();
    choice = choice.toUpperCase();

    System.out.print("Enter the amount of  hours used: ");
    hours = input.nextDouble();

    switch ( choice )
    {
        case "A":
            if ( hours > 10 ){
                (( hours - 10) * 2 ) + 9.95;    << ERROR: Not a statement!
                }
            else
                System.out.println("Total: $9.95");
            break;

为了参考,这已被回答并编辑为:

            case "A":
            if ( hours > 10 ){
                total = (( hours - 10) * 2 ) + 9.95;    // Initialised to total
                System.out.println("Total: $" + total);
            }
            else
                System.out.println("Total: $9.95");
            break;

4 个答案:

答案 0 :(得分:2)

您需要指定生成该行的结果值,如:

double value = (( hours - 10) * 2 ) + 9.95;

阅读Java中的valid statement

答案 1 :(得分:1)

您没有将此表达式值(( hours - 10) * 2 ) + 9.95;设置为任何变量。 将值设置为任何变量,如下所示:

double total = (( hours - 10) * 2 ) + 9.95;

答案 2 :(得分:1)

该行不是Java语句,根据Oracle doc,语句应该是一个完整的执行单元

  

     

陈述大致相当于自然语言中的句子。一个   声明形成一个完整的执行单元。以下类型   可以通过终止表达式将表达式转换为语句   用分号(;)。

     
      
  • 作业表达
  •   
  • 使用++或 -
  •   
  • 方法调用
  •   
  • 对象创建表达式
  •   

答案 3 :(得分:0)

您必须将结果分配给小时变量,如下所示:

hours = (your expression here);