如何在 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));
}
我正在制作一个 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));
}