Java 对计算不同会员级别折扣的代码进行调试时遇到困难
总而言之,这段代码应该询问客户姓名、成员级别和原始购买价格。它应该将所有这些存储在各自的变量中,如果输入的不是可接受的成员级别,则程序应该退出。存储所有变量后,客户的姓名、会员级别、原始购买价格、促销价格和节省的金额应以本文末尾的格式打印出来。提前感谢您的帮助Java 对计算不同会员级别折扣的代码进行调试时遇到困难,java,debugging,printf,Java,Debugging,Printf,总而言之,这段代码应该询问客户姓名、成员级别和原始购买价格。它应该将所有这些存储在各自的变量中,如果输入的不是可接受的成员级别,则程序应该退出。存储所有变量后,客户的姓名、会员级别、原始购买价格、促销价格和节省的金额应以本文末尾的格式打印出来。提前感谢您的帮助 import java.util.*; public class Discount{ public static void main(String[] args){ Scanner keyboard = new Scanner
import java.util.*;
public class Discount{
public static void main(String[] args){
Scanner keyboard = new Scanner(System.in);
double purchase = 0.0;
double platinum = (purchase * .2);
double gold = (purchase * .15);
double silver = (purchase * .1);
String Platinum = null;
String Gold = null;
String Silver = null;
String customerName = null;
String level = null;
double discount = 0.0;
System.out.print("Please enter a customer name: ");
customerName = keyboard.nextLine();
System.out.print("Please enter the customer's member level: ");
level = keyboard.nextLine();
if (!level.equals("Platinum") && !level.equals("Gold") && !level.equals("Silver"))
{
System.exit(0);
}
System.out.print("Please enter the origianl purchase price: ");
purchase = keyboard.nextDouble();
System.out.println("Congratualations, " + customerName + "!");
if (level.equals("Platinum") && purchase > 500)
{
discount = (platinum + (purchase*.05));
System.out.println("As a " + level + " level cardholder, you have received a 25% discount during Bedlam.");
}
else if (level.equals("Platinum"))
{
discount = (platinum);
System.out.println("As a " + level + " level cardholder, you have received a 20% discount during Bedlam.");
}
else if (level.equals("Gold"))
{
discount = (gold);
System.out.println("As a " + level + " level cardholder, you have received a 15% discount during Bedlam.");
}
else if (level.equals("Silver"))
{
discount = (silver);
System.out.println("As a " + level + " level cardholder, you have received a 10% discount during Bedlam.");
}
到目前为止,一切都很正常,如果我输入M作为customerName,输入Silver作为level,输入500.20作为purchase,这就是在命令提示符中打印出来的内容:
祝贺你,M!
作为银级持卡人,您在混乱期间可享受10%的折扣。
线程“main”java.util.IllegalFormatConversionException中的异常:f!=java.lang.String
位于java.util.Formatter$FormatSpecifier.failConversion(未知源)
位于java.util.Formatter$FormatSpecifier.printFloat(未知源)
位于java.util.Formatter$FormatSpecifier.print(未知源)
位于java.util.Formatter.format(未知源)
位于java.io.PrintStream.format(未知源)
位于java.io.PrintStream.printf(未知源)
在Discount.main(Discount.java:62)
这是成功执行时的外观:
Congratulations, Marge Simpson!
As a Silver level cardholder, you received a 10% discount during Bedlam.
Original purchase price: $500.20
Promotional price: $450.18
Amount saved: $50.02 */
}
}
参考。
请尝试以下语法:
System.out.println( "Original purchase price: $" + String.format("%.2f",purchase));
System.out.println("Promotional price: $" + String.format("%.2f",discount));
System.out.println("Amount saved: $" + String.format("%.2f", purchase-discount));
现在,您基本上正在传递整个字符串
“原始购买价格:$”+purchase
,作为%.2f
的参数。改用String.format
:
System.out.println("Original purchase price: $" + String.format("%.2f", purchase));
这也消除了将
“\n”
附加到字符串的需要,因为您可以使用System.out.println
这一有效方法,但它不会将任何内容读入折扣变量。有什么建议吗?这里的一切都初始化为0:double purchase=0.0;双白金=(购买*.2);双倍黄金=(购买*.15);双银=(购买*.1);在purchase
设置为非零后,应将每个变量乘以purchase
value@TreyJonn:由于这可能是一项家庭作业,今后请像我在评论中所做的那样给出提示,而不是给出答案。我知道,当我不得不在几乎没有或根本没有帮助的情况下解决一个问题时,我学到了很多东西。这很有效,只是它没有读入折扣变量中的任何内容。有什么建议吗?如果“不在折扣变量中读取任何内容”,您的意思是它被设置为0,对吗?仔细看看你的代码,你就会明白为什么。(提示:请看等号左侧的五个位置折扣
。注意右侧的值吗?)
System.out.println("Original purchase price: $" + String.format("%.2f", purchase));