public class Ex51 {
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
System.out.println("Enter as many integers as you wish. Enter 0 to stop." + "\nReturns "
+ "\nNumber of negative integers input. " + "\nNumber of positive integers input." + "\nTotal sum."
+ "\nMean.");
int i = 0;
int sum = 0;
int temp = 0;
int minusCount = 0;
int plusCount = 0;
float mean = 0;
boolean isZero = false;
do {
System.out.print("Enter an integer: ");
temp = input.nextInt();
if (temp == 0 && i == 0) {
isZero = true;
break;
} else if (temp < 0) {
minusCount++;
} else if (temp > 0)
plusCount++;
if (temp != 0) {
i++;
sum += temp;
mean = (float) sum / (float) i;
}
} while (temp != 0);
if (!isZero) {
System.out.printf("\nThe number of positives is: %d" + "\nThe number of negatives is: %d"
+ "\nThe total is: %d" + "\nThe average is: %.2f", plusCount, minusCount, sum, mean);
} else {
System.out.println("No numbers are entered except 0.");
}
}
}
这是一个示例运行:
Enter as many integers as you wish. Enter 0 to stop.
Returns
Number of negative integers input.
Number of positive integers input.
Total sum.
Mean.
Enter an integer: 8
Enter an integer: 6
Enter an integer: 20
Enter an integer: -2
Enter an integer: 0
The number of positives is: 3
The number of negatives is: 1
The total is: 32
The average is: 8$00
我的问题就在底部:8$00 当我为 float 指定 %.2f 时,中间没有特殊字符。 对于 arg 平均值,所需的输出将为“8.00”。 我发布了所有代码,因为我认为我会让任何初学者的错误变得相当明显,如果不是,我的设置是否有任何问题。 我在 Eclipse 上使用 jre9 运行它。
最佳答案
“.”之前缺少一个数字例如2.2f。
对于其余的代码,为了初始化,您可以在一行中完成所有操作。最后一个 if 语句是无用的,因为您已经在第一个 if 语句中验证了它是否为 0,因此您不需要这个条件。无论如何你都不会到达那里,因为你的 while 条件是 temp 不为 0。
对于平均值你可以这样做:
平均值=( float )(总和/i);
我认为你只是让你的生活变得复杂。
你可以这样做:
int temp = 1;
int positive = 0;
int negative = 0;
int i = 0;
int sum = 0;
while (temp != 0)
{
System.out.print("Please enter an integer:");
temp = input.nextInt();
if(temp == 0)
//your print statement here
else if(temp > 0)
positive ++;
else
negative ++;
sum += temp;
i++;
}
关于Java:Printf(%.2f,arg) 显示 f$ff 而不是 f.ff。什么可能导致这种情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46942520/