【问题标题】:Else without if error: I dont understand why java isn't recognizing my if statment [duplicate]否则没有if错误:我不明白为什么java无法识别我的if语句[重复]
【发布时间】:2013-10-10 00:13:17
【问题描述】:

在第 53 行,它给了我一个 else without if 的错误。我显然有一个 if 语句,但我不知道我做错了什么让 java 无法识别它。我试过在牙套周围移动,但没有任何效果。

import java.util.Scanner;
import java.text.DecimalFormat;

public class Quiz6
{

    public static void displayInfo()
    {
        System.out.println(
                            "\n\tAuthor: Allen Watson \n" +
                            "\tClass: \tCSCI 1250-001 \n" +
                            "\tDate: \t10/09/2013 \n" +
                            "\tLab: \tQuiz6 \n");
    }

    public static double calculatePay(int hourWorked, double hourlyRate)
    {
        double dPay;
        dPay = (hourWorked * hourlyRate);
        return dPay;
    }

    public static void main(String[] args)
    {
        Scanner Keyboard = new Scanner(System.in);
        DecimalFormat dfMoney = new DecimalFormat("$#,##0.00");
        String strName;
        int iCount;
        int iDaysWorked;
        int iTotalHoursWorked;
        int iSingleDayHours;
        double dHourlyRate;
        final byte WEEK = 7;

        displayInfo();

        System.out.print("\tWhat is your name: ");
        strName = Keyboard.nextLine();
        System.out.print("\n\tHow many days did you work this week: ");
        iDaysWorked = Keyboard.nextByte();
        System.out.print("\n\tHow much do you make an hour: ");
        dHourlyRate = Keyboard.nextDouble();

        if(dDaysWorked <= WEEK);
        {
            for(iCount = 1; iCount <= iDaysWorked ; iCount++)
            {
                System.out.print("\tHow many hours did you work on the day"+iCount+":");
                iSingleDayHours = Keyboard.nextInt();
                iSingleDayHours += iTotalHoursWorked;
            }   
        }
        else
        {
            bDaysWorked = 0;
            System.out.print("A week can only have seven days");
        }

        calculatePay(iTotalHoursWorked,dHourlyRate);

        System.out.print("Hello "+strName+", you worked a total of "+iTotalHoursWorked+" hours over "+iDaysWorked+" days.");
        System.out.print("\nWith am hourly rate of "+dfMoney(dHourlyRate)+" you made "+dfMoney(dPay)+".");

    }
}

【问题讨论】:

  • 我不会计算你的行号。哪里出错了?
  • 分号是语句的结尾。花括号 {}else{} 必须在 之前 if 语句的结尾 - 所以在分号之前
  • 请遵循正确的编码约定,并在循环、类、方法等内部使用 3+ 个空格进行缩进...
  • 另外,dDaysWorked 尚未定义。你的意思可能是iDaysWorked

标签: java if-statement compiler-errors


【解决方案1】:

问题来了:

if(dDaysWorked <= WEEK); // remove the ;

结尾的; 使Java 认为if 语句已完成,并且它后面的{} 块在if 条件之外,因此else 部分没有匹配前面的if它。

这是一个相当常见的错误,而且很难发现。如果不是else 块,代码会正确编译,但它会出错。底线:永远不要在 ifforwhile 语句的开头添加 ;

【讨论】:

  • 我没有收到 java 没有从我调用的 calculatePay 方法返回我的 dPay 变量的错误。第 20 和 59 行。
  • @user2792997 如果这个答案对您有帮助,请不要忘记点击左侧的复选标记accept。关于您的新问题:您忘记声明一个局部变量来存储calculatePay 返回的值。这样做:double dPay = calculatePay(iTotalHoursWorked,dHourlyRate);
  • 很抱歉一直问问题,但我对 java 还比较陌生。我已经解决了我们讨论过的所有问题,但现在它告诉我我的 iTotalHoursWorked 变量is 尚未初始化。第 58 和 49 行。
  • @user2792997 总是在你第一次声明变量时初始化它们...iTotalHoursWorked = 0;
【解决方案2】:
if(dDaysWorked <= WEEK); - remove last ;

【讨论】:

    猜你喜欢
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-13
    • 1970-01-01
    • 2016-04-20
    相关资源
    最近更新 更多