gpt4 book ai didi

Java 程序产生不正确的输出。 (while 循环)

转载 作者:行者123 更新时间:2023-12-01 23:42:41 24 4
gpt4 key购买 nike

Here is a sample of what output should look like!!

我的用于显示已购买笔记本电脑的订单摘要的程序使用 (1)while 循环来处理多台笔记本电脑,使用 (2)if-else 来获取笔记本电脑名称/价格;或错误消息“无效选择!请重试。”,(3) 嵌套 if 以确定笔记本电脑的选择何时有效以继续其余处理。以及 (4) 嵌套 if 仅在购买笔记本电脑时打印订单摘要。

当我在 choice 中输入无效数字(如 8)时,if 语句仍然执行,而不是其下面的 else 语句。
当我在 choice 中输入有效数字时,它会要求输入数量,但是当我输入数量时,如何将该用户输入添加到订单摘要中,而不是让程序返回到循环顶部?

我对 Java 很陌生,我的代码应该如何生成正确的输出?

这是我当前的代码(JAVA)

public static void main(String[] args) { 
char cont='Y';
int qty=0;
int trigger=0;

double total=0;
double subtotal=0;
double tax=0;
double price;
double lineItem=0;

String orderSummary=" ";
String laptop=" ";
Scanner input = new Scanner(System.in);
Calendar dateTime = Calendar.getInstance();

//Displays a list of laptops with prices and asked user for their choice. Prompt #1
int choice = 0;

while (choice >= 0) {
System.out.printf("%nTOP LAPTOPS OF %tY"
+ "%n%n1. %-23s %7s $%,9.2f"
+ "%n2. %-23s %8s %,9.2f"
+ "%n3. %-23s %8s %,9.2f"
+ "%n4. %-23s %8s %,9.2f"
+ "%n5. %-23s %8s %,9.2f"
+ "%n%nEnter your choice: ",
dateTime,
"HP Envy 13", " ", 799.99,
"Asus ZenBook 13 UX333FA", " ", 849.99,
"Dell XPS 13", " ", 989.99,
"Alienware Area 51-m", " ", 1999.99,
"Razer Blade Stealth", " ", 1299.00);

choice = input.nextInt();

if (choice < 6 || choice > 0) {
System.out.printf("Enter the quantity:");
qty = input.nextInt();
} else {
System.out.printf("Invalid choice! Try again.%n%n");
System.out.printf("Enter 'Y' to add a laptop to your purchase or 'N' to exit: ");
cont = input.next().charAt(0);
}
if (cont == 'Y') {
continue;
}
if (cont == 'N') {
System.exit(0);
}

//The following if-else prints a $ sign for the first line item
if (trigger == 1) {
orderSummary += String.format("%n%, -9d %-30s %8s $%,17.2f", qty, laptop, " ", lineItem);
trigger = 0;
} //End else for no $ sign

//The following statement prints the order summary of the laptops purchased.
//This should be done when there are no more laptops to process
if (choice > 0) {
if (choice < 6) {
tax = subtotal * .0825;
total = subtotal + tax;

orderSummary += String.format("%n%n%34s Subtotal %6s %,17.2f"
+ "%n%31s Tax @ 8.25%% %6s %,17.2f"
+ "%n%n%37s TOTAL %5s $%,17.2f%n",
" ", " ", subtotal,
" ", " ", tax,
" ", " ", total);
System.out.printf("%s", orderSummary);
break;
} //End if valid choice range ends print order summary
} //End if valid choice range begins
}
}

最佳答案

因为语句规则 AND (&&) OR (&&) 对应于 boolean 代数。

if(选择 < 6 || 选择 > 0)对应于“如果选择为 <8”为真,或者如果“选择 > 0”为真,则整个表达式为真

例如,对于选定的 8 个,它将为 TRUE,因此其他情况不会发生

尝试 if (选择 > 0 && 选择 <6)

然后思考“业务逻辑”,准备存储和重用,组织变量进行计算,请参见下面的示例

import java.util.*;

public class Example{
public static void main(String[] args) {


String [] product = {"HP Envy 13","Asus ZenBook 13 UX333FA","Dell XPS 13","Alienware Area 51-m","Razer Blade Stealth"};
double [] unit_rate = {799.99, 849.99, 989.99, 1999.99, 1299.00};
int [] user_selectected_qty = new int [product.length];

double total = 0;
boolean again = true;

Scanner input = new Scanner(System.in);
int choice,qty;

while (again)
{

System.out.println("TOP LAPTOPS");
for(int i=1; i<product.length ; i++)
System.out.println(""+i+".\t"+product[i]+"\t\t\t"+unit_rate[i]);

System.out.println("Enter your choice:");
choice = input.nextInt();

// SELECTION PROCESS
if (choice >0 && choice <6)
{
System.out.println("Enter the quantity for "+product[choice]+":");
qty = input.nextInt();
user_selectected_qty[choice]+=qty;


// ... ASK TO DO IT AGAIN...


again=false;

}
else
{
System.out.println("Wrong choice:");
}

}
// BEFORE END SHOW SUMMARY ...COMPUTE TOTAL ...
System.out.println("LAPTOP ORDER SUMARY");

for(int i=1; i<product.length ; i++)
if (user_selectected_qty[i] > 0)
System.out.println(""+user_selectected_qty[i]+"\t"+product[i]+"\t\t\t"+unit_rate[i]*user_selectected_qty[i]);





}
}

关于Java 程序产生不正确的输出。 (while 循环),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58252151/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com