我正在尝试测试我正在研究的课程。我想运行一份打印声明,其中雇员的月薪乘以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
答案 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;
}