Java方法和返回语句

时间:2015-11-21 03:40:48

标签: java

我正在尝试测试我正在研究的课程。我想运行一份打印声明,其中雇员的月薪乘以12,然后给我年薪然后增加10%。除了最后一部分,我已经完成了一切工作

到目前为止,这是我的代码(这只是部分代码)

构造

 public double findSal(){
    return this.monthlySalary * 12;
}

public double giveRaise(){
    return this.monthlySalary * 12 * 0.10;
}

System.out.printf("The yearly salary for " +employee1.getfirstName()+" " + employee1.getlastName()+" " + "With a 10% raise is: $" +employee1.giveRaise()+ "\n");
System.out.printf("The yearly salary for " +employee2.getfirstName()+" " + employee2.getlastName()+" " + "With a 10% raise is: $" +employee2.giveRaise()+ "\n");

这是我在运行

时遇到的错误

线程“main”中的异常java.util.UnknownFormatConversionException:Conversion ='r'     at java.util.Formatter $ FormatSpecifier.conversion(Formatter.java:2691)     at java.util.Formatter $ FormatSpecifier。(Formatter.java:2720)     在java.util.Formatter.parse(Formatter.java:2560)     在java.util.Formatter.format(Formatter.java:2501)     在java.io.PrintStream.format(PrintStream.java:970)     在java.io.PrintStream.printf(PrintStream.java:871)     在labex4oop.employeeTest.main(employeeTest.java:35) Java结果:1

3 个答案:

答案 0 :(得分:1)

您的代码遭受轻微疏忽:

Public double giveRaise(){
    return this.monthlySalary * 12.0 * 1.10; // was 0.10
}

您还需要转换double打印值时,您必须转义文字中的百分号(因为您使用printf %具有占位符语义):< / p>

System.out.printf("The yearly salary for " +employee2.getfirstName()+" " + employee2.getlastName()+" " + "With a 10%% raise is: $" +String.valueOf(employee2.giveRaise())+ "\n");

答案 1 :(得分:1)

System.out.printf("With [...] a 10% raise [...]");
                                  ^ // your problem is here

printf()用于格式化输出。格式字符串中的占位符通过%引入。代码中的10% raise被解释为%r格式说明符。由于您既没有格式参数也没有%r有效的printf格式说明符,所以会收到错误消息,告诉您格式字符串错误。

要包含文字%,您必须使用%%。或者完全停止使用printf(),因为您没有使用它的功能:

System.out.println("The yearly salary for " 
   + employee2.getfirstName()
   + " " + employee2.getlastName()
   + " with a 10% raise is: $" 
   + employee2.giveRaise() + "\n"
);

答案 2 :(得分:0)

这应该给你正确的答案。 我试过了。public double giveRaise(){ return this.monthlySalary * 12 * 1.10; }