当前位置: 首页 > 知识库问答 >
问题:

Java: Printf(%.2f, arg)显示f$ff而不是f.ff.是什么导致的?

公孙锋
2023-03-14
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.");
        }
    }
}

这是一个示例运行:

根据需要输入任意数量的整数。输入 0 停止。
返回
输入的负整数数。
正整数输入的数量。
总和。
意味 着。输入整数:8 输入整数:6 输入整数:20 输入整数:




-2
输入整数:0

正数为:3
负数为:1
总数为:32
平均值为:8$00

我的问题就在底部:当我为中间没有特殊字符的浮点数指定%.2f时,是8$00。arg mean的期望输出是“8.00”。我把所有的代码都贴了出来,因为我认为我会让初学者犯的错误变得很明显,如果不是这样,我的设置就不会有任何问题。我用jre9在Eclipse上运行这个程序。

共有1个答案

刘玉石
2023-03-14

“”之前缺少数字例如2.2f。

对于其余代码,对于初始化,您可以在一行中完成所有操作。最后一个 if 语句是无用的,因为您已经在第一个语句中验证了它是否为 0,因此您不需要这个条件。无论如何你都不会到达那里,因为你的条件是温度不是 0。对于平均值,
您可以做:平均值 = (浮点)(总和/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.net.ConnectException:连接被拒绝 这是我的编码方式 谁能告诉我为什么我只在某个时候得到这个例外?是否可能是由于从Android应用程序发出搜索请求而导致此异常,因为我们的网站不支持从android应用程序发出请求 问题答案: 当您尝试打开与IP地址/

  • 问题内容: 我将Java库打包为JAR,当我尝试从中调用方法时会抛出很多s。这些错误似乎随机出现。哪些类型的问题可能导致此错误? 问题答案: 这意味着你对库进行了一些不兼容的二进制更改,而无需重新编译客户端代码。 Java语言规范§13详细介绍了所有这些更改,最显着的是将非非私有字段/方法更改为,反之亦然。 根据新库重新编译客户端代码,你应该一切顺利。 更新:如果发布公共库,则应尽可能避免进行不兼

  • 为什么我会。。。 未捕获的类型错误:string.split 不是一个函数 ...当我跑步时...

  • 问题内容: 我正在阅读一个python脚本,该脚本接受XML文件的输入并输出XML文件。但是,我不了解打印语法。可有人请解释什么的呢? 问题答案: 该方法格式化字符串字面量 和它的新功能。 甲 格式的字符串文字 或 F-串 是前缀字符串文字或。这些字符串可能包含替换字段,这些替换字段由花括号分隔。尽管其他字符串文字始终具有恒定值,但是格式化的字符串实际上是在运行时评估的表达式。 格式化字符串文字的

  • 我正在使用datetime选择器引导,试图使用dd/mm/yyyy hh:mm格式。 正如您从我的屏幕截图中看到的,将仅以AM/PM格式显示时间,而不是所需的时间: 如果我点击日历图标,除了时钟图标外不会显示任何内容。 以下是HTML: 和JS,加载在“文档就绪”:

  • 问题内容: 我不明白为什么很少有导入包在“ java”后面附加“ x”。是什么原因?难道就和其他人一样吗? 问题答案: Swing最初是Java的扩展-可单独下载的库。它成为Java 1.2中“主要” JRE的一部分。一个单独的库声称拥有java。*包,这很奇怪,因此是目前的情况。还有许多其他扩展都有类似的故事。 在Swing的维基百科的文章有其历史提供更多的信息。