开始在这里感到沮丧。自我思想的菜鸟在这里。我正在关注John Deitel所着的“java how to program”,以及我的一位朋友(前CS学生)寄给我的一些非常随意的文档。
我编写了代码来计算int
的平均值,这些平均值很好。
然后我想在double
中测试它,但是当我按 ctrl + 1 时,即使“工具已成功完成”,也会继续出错。我有因为发现其他人的代码执行相同的任务,我有点理解,但我想知道我的代码有什么问题。
我已经尝试将racecounter设置为加倍以移除average = (double) total / raceCounter;,这会导致更多错误。
import java.util.Scanner;
public class RaceAvgNoNamesDouble
{
public static void main( String[] args)
{
Scanner input = new Scanner( System.in );
double total;
int raceCounter;
double racetime;
double average;
total = 0;
raceCounter = 0;
System.out.print( "Enter race time or -1 calculate: ");
racetime = input.nextDouble();
while (racetime != -1)
{
total = total + racetime;
raceCounter = raceCounter + 1;
System.out.print( "Enter race time or -1 calculate: ");
racetime = input.nextDouble();
}
if ( raceCounter != 0)
{
average = (double) total / raceCounter;
System.out.printf( "\nTotal of the %d races entered %d\n", raceCounter, total );
System.out.printf( "Race average is %.2f\n", average);
}
else
System.out.println( "No races were entered");
}
}
答案 0 :(得分:0)
您不能将printf
格式%d
用于double,这就是问题,请使用%f
,如下所示:
System.out.printf( "\nTotal of the %d races entered %.2f\n", raceCounter, total );
有关更多信息,请参阅this tutorial
另请注意,average = (double) total / raceCounter;
中的广告素材是多余的
答案 1 :(得分:0)
我没有看到任何逻辑错误,除了您打印的方式可能无法正常工作,因为总计是双倍的'。您需要将其更改为 -
System.out.printf(" \ n%d个比赛的总数输入%。2f \ n", raceCounter,total);
答案 2 :(得分:0)
你的第一个printf声明似乎在犯了一个小错误。由于total
是双倍的,您应该使用%f
格式而不是%d
格式。