import java.util.*; //for %d%nimport java.text.*; //for DecimalFormatpublic class Favorite {public static void main(String[] arguments) {String itemName = "Golden Beans";float offerPrice = 314;float sellPrice = 321;float value = (sellPrice - offerPrice);float cashStack = 500_000;float maxAmount = (cashStack / offerPrice);float percentageProfit = ((value / offerPrice) * 100);System.out.println("Approx. Offer Price is " + "\t" + offerPrice);System.out.println("Approx. Sell Price is " + "\t" + sellPrice);System.out.println("The potential profit margin is " + value);System.out.printf("With a cash stack of " + cashStack + " we can buy " + "%.0f%n", maxAmount);//why can't I add + itemName; it gives me a compile error when using printf. I can add as much text etc before but not after using + "%.0f%n"System.out.printf("The profit margin of " + itemName + " as a percentage is "+ "%.3f%n", percentageProfit);//why can't I add text here; it gives me a compile error when using printf. I can add as much text etc before but not after using + "%.0f%n" } }
3 回答
UYOU
TA贡献1878条经验 获得超4个赞
您的代码的替代解决方案;
System.out.printf("With a cash stack of "
+ cashStack
+ " we can buy "
+ "%.0f ", maxAmount).println(itemName);所以你不能混淆 printf 和 println 的用法。
MM们
TA贡献1886条经验 获得超2个赞
要在此处完成其他答案,在使用 printf 时,我会避免在格式字符串中连接变量并执行以下操作:
System.out.printf("With a cash stack of %.0f we can buy %.0f %s%n", cashStack, maxAmount, itemName);的语法printf是public PrintStream format(String format, Object... args)。
当您尝试在第二个参数后添加更多文本时,您正在尝试将字符串添加到无法在任何类型转换中工作的 PrintStream。
要通过一次调用打印两行,您可以执行以下操作:
System.out.printf("With a cash stack of %.0f we can buy %.0f %s%n"
+ "The profit margin of %s as a percentage is %.3f%n",
cashStack, maxAmount, itemName,
itemName, percentageProfit);
慕森王
TA贡献1777条经验 获得超3个赞
将您的打印语句更改为%s(对于 a String)而不是%n(这是一个换行符)
System.out.printf("With a cash stack of "
+ cashStack
+ " we can buy "
+ "%.0f %s", maxAmount, itemName);添加回答
举报
0/150
提交
取消
