类分配:编写一个方法来计算棒球运动员的平均击球数。我需要输出为 .345,但我不断得到 0.345。如何格式化此输出,以便在小数点前不显示前导零?感谢您提供的任何帮助。
这是我的棒球运动员类中的代码:
//BaseballPlayer parameters
String name;
int number;
int singles;
int doubles;
int triples;
int homeRuns;
int atBats;
int walks;
int sacrificeFlies;
//DecimalFormat
static DecimalFormat df = new DecimalFormat(".000");
//BaseballPlayer constructor method
public BaseballPlayer(String name, int number, int singles, int triples, int homeRuns, int atBats, int walks,
int sacrificeFlies)
{
this.name = name;
this.number = number;
this.singles = singles;
this.triples = triples;
this.homeRuns = homeRuns;
this.atBats = atBats;
this.walks = walks;
this.sacrificeFlies = sacrificeFlies;
}
public double getBattingAverage()
{
return Double.parseDouble(df.format( (double) ( singles + doubles + triples + homeRuns ) / atBats) );
}
这是我主类中的代码:
BaseballPlayer player01 = new BaseballPlayer( "Mr. Business",13,12,13,4,84,63,7);
System.out.println(player01.getBattingAverage());
我的输出:
跑:
0.345
生成成功(总时间:0 秒(
您忘记格式化实际输出 - 您正在格式化进入Double.parseDouble()
函数的值,而不是getBattingAverage()
函数的实际结果,因此System.out.println()
输出不是您所期望的。您的主要方法应如下所示:
public static void main(String[] args) {
BaseballPlayer player01 = new BaseballPlayer ( "Mr. Business",13,12,13,4,84,63,7);
String str = df.format(player01.getBattingAverage());
System.out.println(str);
}
如果要格式化实际的getBattingAverage((输出,则需要执行以下操作:
public String getBattingAverage() {
Double average = Double.parseDouble(df.format( (double) ( singles + doubles + triples + homeRuns ) / atBats) );
return df.format(average);
}
那么你的主要方法是这样的:
Main player01 = new Main( "Mr. Business",13,12, 13,4,84,63,7);
System.out.println(player01.getBattingAverage());
另一方面,我相信你忘记了为你的棒球运动员设置双打......所以它将始终为 0。
这里有一种方法可以做到这一点。
double[] vals = { 0.233, .229, .292
};
for (double v : vals) {
System.out.println(String.format("%.3f", v).substring(1));
}