【问题标题】:Syntax error on system.out.println?system.out.println 上的语法错误?
【发布时间】:2015-06-12 22:19:36
【问题描述】:

这适用于双精度类型的常量。

我的 system.out.println 代码出现此语法错误:

标记“;”的语法错误,@预期

谢谢!

public final class Netpay {

public static void main(String[] args) {
    // TODO Auto-generated method stub

public static final double FEDERAL_TAX_PERCENT = 10.00;
public static final double STATE_TAX_PERCENT = 4.5;
public static final double SS_PERCENT = 6.2;
public static final double MEDICARE_PERCENT = 1.45;
public static final double PAY_PER_HOUR = 7.25;



    int hoursPerWeek = 40;

    double grossPay = hoursPerWeek * PAY_PER_HOUR;
    double federalTax = grossPay * FEDERAL_TAX_PERCENT / 100;
    double stateTax = grossPay * STATE_TAX_PERCENT / 100;
    double medicare = grossPay *  MEDICARE_PERCENT / 100;
    double socialSecurity = grossPay * SS_PERCENT / 100;
    double netPay = grossPay -  (federalTax + stateTax + medicare + socialSecurity);

    system.out.println("Hours Per Week = 40");
    system.out.println("Gross Pay= grossPay");
    system.out.println("Net Pay = netPay");

    system.out.println("Deductions:");
    system.out.println("Federal= federalTax");
    system.out.println("State = stateTax");
    system.out.println("Social Security = socialSecurity");
    system.out.println("Medicare = medicare");


}

【问题讨论】:

  • 你认为public static final double FEDERAL_TAX_PERCENT = 10.00; 在方法体内做了什么?
  • 除了@SotiriosDelimanolis 的建议,班级的名字是System,而不是system。 Java 区分大小写

标签: java system


【解决方案1】:

将常量移出main 方法:

public final class Netpay {

    public static final double FEDERAL_TAX_PERCENT = 10.00;
    public static final double STATE_TAX_PERCENT = 4.5;
    public static final double SS_PERCENT = 6.2;
    public static final double MEDICARE_PERCENT = 1.45;
    public static final double PAY_PER_HOUR = 7.25;

    public static void main(String[] args) {
        // the rest of your code goes here
    }
}

如前所述,让系统有一个大写的 S:System.out.println

【讨论】:

    【解决方案2】:

    理解这个概念——在方法中使用publicstatic 是没有意义的。由于在方法中所有变量都是本地的,所以没有任何公共、私有、受保护等。现在,Java 中的静态意味着在 JVM 的生命周期中将保留在堆区域中的东西。现在由于内部方法,变量和对象是本地的,并且一旦方法执行完成就会被垃圾收集(直到你传递它们的引用等),所以也没有静态的意义。 您不能在方法内部使用静态,无论是静态方法还是实例方法。

    1.始终将应用程序不同部分可能需要的常量保存在一个常量文件中。如果您不需要它,那么最好根据需要将其作为方法内部的局部变量或实例变量。
    可以使用 {classname} 从应用程序中的任何位置访问静态实例变量。{variable_name}
    因此,您的常量 Java 文件可能是:

    public class ApplicationConstants {
        public static final double FEDERAL_TAX_PERCENT = 10.00;
        public static final double STATE_TAX_PERCENT = 4.5;
        public static final double SS_PERCENT = 6.2;
        public static final double MEDICARE_PERCENT = 1.45;
        public static final double PAY_PER_HOUR = 7.25;
    }
    

    2.System.out.println() 是在控制台打印一些东西,它接受的参数是一个字符串。因此,如果您将任何内容放在引号内,那么它将是一个字符串(这就是您得到结果为Gross Pay= grossPay 的原因),您想打印一个动态值,然后使用“+”运算符附加它。

    public static void main(String[] args) {
                int hoursPerWeek = 40;
    
                double grossPay = hoursPerWeek * ApplicationConstants.PAY_PER_HOUR;
                double federalTax = (grossPay * ApplicationConstants.FEDERAL_TAX_PERCENT) / 100;    //Corrected your formula - (A+B)/C
                double stateTax = (grossPay * ApplicationConstants.STATE_TAX_PERCENT) / 100;        //Corrected your formula - (A+B)/C
                double medicare = (grossPay * ApplicationConstants.MEDICARE_PERCENT) / 100;         //Corrected your formula - (A+B)/C
                double socialSecurity = (grossPay * ApplicationConstants.SS_PERCENT) / 100;         //Corrected your formula - (A+B)/C
                double netPay = grossPay
                        - (federalTax + stateTax + medicare + socialSecurity);
    
                System.out.println("Hours Per Week = " + hoursPerWeek);
                System.out.println("Gross Pay = " + grossPay);
                System.out.println("Net Pay = " + netPay);
    
                System.out.println("Deductions:");
                System.out.println("Federal = " + federalTax);
                System.out.println("State = " + stateTax);
                System.out.println("Social Security = " + socialSecurity);
                System.out.println("Medicare = " + medicare);
            }
    

    【讨论】:

    • 感谢您的建议,您使静态的概念更加清晰。不幸的是,当我运行代码时,我得到: Hours Per Week = 40 Gross Pay= GrossPay Net Pay = netPay Deductions: Federal= FederalTax State = stateTax Social Security = socialSecurity Medicare = medicare 输出值应该是特定的数字......做什么我需要改变吗?再次感谢
    • @arathore93 Rathore sab,看看你的问题,我猜你对 Java 编程世界是全新的。请查看我对原始答案的编辑,我做了一些修改并进行了解释,您可能需要了解这些内容并会为您提供帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-04
    • 2016-04-10
    • 2015-07-24
    • 2010-12-07
    相关资源
    最近更新 更多