- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
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/
我在 Chrome 上做了一些测试,requestAnimationFrame 产生了 61 fps 而 setTimeOut( callback, 0 ) 产生了 233 fps。 如果一个人想要超
当我调试代码时,我发现 GCC 和 Clang 都为 0.0/0.0 产生 nan,这是我所期望的,但 GCC 产生的 nan 将符号位设置为 1,而Clang 将其设置为 0(如果我没记错的话,与
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想改善这个问题吗?更新问题,以便将其作为on-topic
我在 R Studio 中有一个时间序列。现在我想计算这个系列的log()。我尝试了以下方法: i <- (x-y) ii <- log(i) 但是我得到以下信息:Warning message: I
我有兴趣了解 JavaScript 的内部结构.我试图阅读 SpiderMonkey 的来源和 Rhino但是绕过我的头是相当复杂的。 我问的原因是:为什么像 (![]+[])[+!![]+[]] 生
我们在 Delphi 中使用标准 TWebbrowser 组件,该组件在内部使用 mshtml.dll。另外,我们使用注册表来确保页面使用新的渲染引擎( Web-Browser-Control-Spe
我必须实现一个序列化/反序列化类,并且我正在使用 System.Xml.Serialization 。我有一些IList类型属性并希望在 IList 中序列化解码属于具有特定区域性信息的列表的所有十进
我有一个 Java 应用程序,它读取包含 SQL 查询的 JSON 文件,并使用 JDBC 在数据库上触发它们。 现在我有 5 万个这样的文件,我需要生成 5 万个独立线程来读取每个文件并将它们上传到
我正在尝试将 TensorFlow 入门页面上的示例线性回归程序调整为二次回归。为此,我只是添加了另一个变量并更改了函数。然而,这似乎会导致 NaN 值。这是我的代码: import numpy as
申请后KernelPCA到我的数据并将其传递给分类器 ( SVC ) 我收到以下错误: ValueError: Input contains NaN, infinity or a value too
这背后的想法是,如果我的数据库中存在登录名(正确的用户名+密码),我将重定向到一个页面,并且在进行此身份验证后,他们可以将消息存储在文本文件中。代码非常简单尽管我不确定为什么会收到 IllegalSt
我有一个返回 log10 值的函数。在将它们转换为正常数字时,出现溢出错误。 OverflowError: (34, 'Numerical result out of range') 我检查了日志值,
nosetests 抛出一个 ImportError,尽管我认为这是一个正确配置的 virtualenv。 ==============================================
我是这个网站的新手,所以如果我做错了什么,我提前道歉。当我尝试使用 kivy-garden 的 ScrollLabel 时,它给了我一个错误。基本上我正在尝试创建一个控制台日志,并且我需要能够在文本框
任何人都对 MDSJ 有任何经验?以下输入仅产生 NaN 结果,我不明白为什么。文档非常稀少。 import mdsj.Data; import mdsj.MDSJ; public class MDS
我有一个非常简单的 scala jcuda 程序,它添加了一个非常大的数组。一切都编译和运行得很好,直到我想从我的设备复制超过 4 个字节到主机。当我尝试复制超过 4 个字节时,我收到 CUDA_ER
我正在使用 Hero 组件在两个页面之间创建动画。Hero 组件用于包装一个 Image 小部件(没问题)和一个 Container 小部件(有问题)。 抛出以下溢出错误: ══╡ EXCEPTIO
我无法理解页面 https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special/void 中的这一段: This ope
当在 Angular 中使用不立即触发事件的异步管道时(http 请求或任何有延迟的可观察对象),第一个值为 null为什么会这样?如何避免这种情况? 第一个变化: SimpleChange {
如果一个导入的库生成了一个会 panic 的 goroutine 怎么办?在这种情况下,开发人员无法阻止程序退出。 就像在这段代码中一样,使用延迟恢复调用一个错误的库没有帮助,因为该库正在生成一个 p
我是一名优秀的程序员,十分优秀!