如何在 JOptionPane 中格式化字符串
How do I format a string in JOptionPane
我发现并修复了我的错误,我格式化了两次。
我正在尝试使用 JOptionPane 显示美元金额,但由于它是双精度数,我在小数点后得到了额外的数字。在 JOptionPane 中如何格式化?我尝试使用 String.format 但当我 运行 时出现错误;
Exception in thread "main" java.util.MissingFormatArgumentException:
Format specifier '%.2f'
at java.util.Formatter.format(Unknown Source)
at java.util.Formatter.format(Unknown Source)
at java.lang.String.format(Unknown Source)
at CouponCalc.main(CouponCalc.java:38)
这是我的代码;
import javax.swing.JOptionPane;
public class CouponCalc {
public static void main(String[] args) {
double groceriesCost, discount;
double tier1=.08, tier2=.1, tier3=.12, tier4=.14; //coupon percentages for easy adjustment
groceriesCost = Double.parseDouble(JOptionPane.showInputDialog("Enter cost of groceries."));
if (groceriesCost<0)
{
JOptionPane.showMessageDialog(null, "Invalid Entry"); //TODO implement loop
System.exit(0);
}
else if (groceriesCost>=0 && groceriesCost<=9.99) //No coupon
JOptionPane.showMessageDialog(null, "You do not qualify for any coupons.)");
else if (groceriesCost>=10.00 && groceriesCost<=59.99) //tier 1 coupon
JOptionPane.showMessageDialog(null, String.format("You win a discount coupon of $" + String.format("%.2f", (groceriesCost*tier1)) +
". (8% of your purchase.)"));
else if (groceriesCost>=60.00 && groceriesCost<=149.99) //tier 2 coupon
JOptionPane.showMessageDialog(null, String.format("You win a discount coupon of $" + String.format("%.2f", (groceriesCost*tier2)) +
". (10% of your purchase.)"));
else if (groceriesCost>=150.00 && groceriesCost<=209.99) //tier 3 coupon
JOptionPane.showMessageDialog(null, String.format("You win a discount coupon of $" + String.format("%.2f", (groceriesCost*tier3)) +
". (12% of your purchase.)"));
else if (groceriesCost>=210.00) //tier 4 coupon
JOptionPane.showMessageDialog(null, String.format("You win a discount of $" + String.format("%.2f", (groceriesCost*tier4)) +
". (14% of your purchase.)"));
System.exit(0);
}
}
您不应格式化整个字符串。只有双人间。
JOptionPane.showMessageDialog(null, "You win a discount coupon of $" + String.format("%.2f", (groceriesCost*tier1)) +
". (8% of your purchase.)");
我发现并修复了我的错误,我格式化了两次。
我正在尝试使用 JOptionPane 显示美元金额,但由于它是双精度数,我在小数点后得到了额外的数字。在 JOptionPane 中如何格式化?我尝试使用 String.format 但当我 运行 时出现错误;
Exception in thread "main" java.util.MissingFormatArgumentException: Format specifier '%.2f'
at java.util.Formatter.format(Unknown Source) at java.util.Formatter.format(Unknown Source) at java.lang.String.format(Unknown Source) at CouponCalc.main(CouponCalc.java:38)
这是我的代码;
import javax.swing.JOptionPane;
public class CouponCalc {
public static void main(String[] args) {
double groceriesCost, discount;
double tier1=.08, tier2=.1, tier3=.12, tier4=.14; //coupon percentages for easy adjustment
groceriesCost = Double.parseDouble(JOptionPane.showInputDialog("Enter cost of groceries."));
if (groceriesCost<0)
{
JOptionPane.showMessageDialog(null, "Invalid Entry"); //TODO implement loop
System.exit(0);
}
else if (groceriesCost>=0 && groceriesCost<=9.99) //No coupon
JOptionPane.showMessageDialog(null, "You do not qualify for any coupons.)");
else if (groceriesCost>=10.00 && groceriesCost<=59.99) //tier 1 coupon
JOptionPane.showMessageDialog(null, String.format("You win a discount coupon of $" + String.format("%.2f", (groceriesCost*tier1)) +
". (8% of your purchase.)"));
else if (groceriesCost>=60.00 && groceriesCost<=149.99) //tier 2 coupon
JOptionPane.showMessageDialog(null, String.format("You win a discount coupon of $" + String.format("%.2f", (groceriesCost*tier2)) +
". (10% of your purchase.)"));
else if (groceriesCost>=150.00 && groceriesCost<=209.99) //tier 3 coupon
JOptionPane.showMessageDialog(null, String.format("You win a discount coupon of $" + String.format("%.2f", (groceriesCost*tier3)) +
". (12% of your purchase.)"));
else if (groceriesCost>=210.00) //tier 4 coupon
JOptionPane.showMessageDialog(null, String.format("You win a discount of $" + String.format("%.2f", (groceriesCost*tier4)) +
". (14% of your purchase.)"));
System.exit(0);
}
}
您不应格式化整个字符串。只有双人间。
JOptionPane.showMessageDialog(null, "You win a discount coupon of $" + String.format("%.2f", (groceriesCost*tier1)) +
". (8% of your purchase.)");