如何在 JLabel 中使用的 GUI 中限制字符串中零 (0) 的数量

How To Limit The Number of Zeros (0) In A String In GUI Used In JLabel

我正在制作一个 swing 应用程序,我在同一个包中有一个主 class 和其他 classes。我想通过另一个 class 为另一个 class 中的 JLabel 分配一个字符串值,当我分配该值时它工作正常但我不能限制 JLabel 中打印的零的数量它给了我很多错误主要是这些。

Exception in thread "AWT-EventQueue-0" java.util.IllegalFormatConversionException: f != java.lang.String
    at java.util.Formatter$FormatSpecifier.failConversion(Unknown Source)
    at java.util.Formatter$FormatSpecifier.printFloat(Unknown Source)
    at java.util.Formatter$FormatSpecifier.print(Unknown Source).

view.sub1gpa = new JLabel(String.format("%.2f", fsub1gpa));
view.sub1gpa.setForeground(Color.BLUE);
view.sub1gpa.setFont(f2);
view.sub1gpa.setLocation(200, 340);
view.sub1gpa.setSize(500, 30);
view.resframe.add(view.sub1gpa);

异常堆栈跟踪:

java.util.IllegalFormatConversionException: f != java.lang.String

告诉您 fsub1gpa 变量保存的是字符串而不是浮点数。您要么将其用作字符串,要么通过使用 Double 对其进行解析将其转换为 double,然后格式化返回的 double 值。

更妙的是 -- 使用原始数字数据,不要尝试先将其转换为字符串。了解 String.format(...) 方法将为您完成数字到字符串的转换,但会比您之前的原始转换做得更好。

另请注意,您可能不想添加新的 JLabel 来执行您正在做的事情,而是简单地设置 GUI 中已经存在的 JLabel 的文本。有关这方面的更多详细信息,请post有关您自己的代码和程序的更多详细信息。

您正在尝试将字符串格式化为双精度值。如果字符串在使用 Double.parseDouble 之前包含双精度数。不然不行。

你可以使用这样的东西

public Testing (String testing){
        Double one=Double.parseDouble(testing);
        //or you can use

        // where this will format your floating point as you need
        DecimalFormat form=new DecimalFormat("#.###");
        System.out.println(form.format(one));
    }

请注意 "DecimalFormat" 中的表格只是一个示例,以获取更多信息:http://docs.oracle.com/javase/7/docs/api/java/text/DecimalFormat.html

或者Hovercraft Full Of Eels 提到的最正确的方法是理解String.format是如何工作的,例如:

public Testing (Double testing){
        System.out.println(String.format("% 2f", testing));
    }