- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我很喜欢这个程序。有人可以告诉我我做错了什么吗?该程序提示用户输入产品目录中的产品数量。然后程序应提示用户输入产品目录中每个产品的名称和价格。输入所有产品后,程序应输出目录中最昂贵产品的产品信息(名称和价格)。跟踪价格最高的产品的解决方案。
import java.util.Scanner;
public class ProductTester
{
private static final String price = null;
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Enter the number of Products: ");
int count = in.nextInt();
int name = 1;
int item = 1;
for (int i = 1; i <= count; i++) {
System.out.print("Enter the Name of Product " + item + " :\n");
String name1 = in.toString();
System.out.print("Enter the Price of Product " + item + " :");
int price = in.nextInt();
item++;
}
System.out.println("Product = " + name + "$ " + price);
}
}
当我运行这个程序时,它会问我输入了多少次以及我什么时候输入这两个问题,但我无法输入任何内容,实际上,产品问题应该先出现,然后是价格问题。
最佳答案
首先,你读错了输入:
这一行:
String name1 = in.toString();
应该是:
String name1 = in.next();
通过调用 in.toString()
,您正在调用将返回此 Scanner
的字符串表示形式的方法。此方法从 Object
类覆盖,该类是 Java 中所有类的父类,通常用于调试目的。
当您调用 in.next()
时,您将在 Scanner
的输入流中读取下一个 String
标记。
其次,您没有在循环中使用 name1
变量或 int price
变量。
对于这部分:
The program should then prompt the user for the name and the price of each product in the product catalog.
现在,您所做的只是在循环中创建变量 name1
和 price
并且不将它们用于任何事情。在您最后的 print 语句中,打印的 name
和 price
是您在程序开始时分配的值。
// the values shown bellow are printed
// ...
private static final String price = null;
// ...
int name = 1;
// ...
因此您的程序将始终打印:
Product = 1$ null
您应该只删除 final static String price
变量,因为它没有任何实际用途。
为了存储产品,您可能希望使用 Java 集合中的对象,例如 ArrayList
。为此,您应该创建一个名为 Product
的类,其中包含产品名称和价格,然后构建它们的列表。
class Product {
String name;
int price;
}
这将是解决您的问题的更好、更简洁、面向对象的方法。但是,您也可以在两个变量中跟踪最大价格和产品名称(看起来您的计划是这样),所以我将向您展示如何做到这一点。
Once all of the products have been entered, the program should output the product information (name and price) of the most expensive product in the catalog.
因此,您可以使用两个变量,String expProdName
和 int expProdPrice
来跟踪最昂贵产品的信息。您还需要两个临时变量,String currProdName
和 int currProdPrice
来获取用户当前输入的信息。
在您的循环中,您使用变量 item
来打印产品的顺序,但您可以只使用循环计数器 i
来执行此操作。
您应该将迄今为止最昂贵的价格 expProdPrice
初始化为 Integer.MIN_VALUE
,这是可能的最低整数值,以便与新价格进行比较肯定会找到最高价格。但是考虑到产品价格不应该为负数,也可以初始化为-1。
然后在循环中,每次读取新价格时,将其与 expProdPrice
中存储的值进行比较,如果较大,则将最贵的价格更新为新价格。您还需要更新产品名称。
让我们看看代码的样子:
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Enter the number of Products: ");
int count = in.nextInt();
String expProdName = ""; // expensive product name
int expProdPrice = Integer.MIN_VALUE; // expensive product price
String currProdName = ""; // current product name
int currProdPrice = -1; // current product price
for (int i = 1; i <= count; i++) {
System.out.print("Enter the Name of Product " + i + " :\n");
currProdName = in.next();
System.out.print("Enter the Price of Product " + i + " :\n");
currProdPrice = in.nextInt();
// if current price larger that the most expensive price thus far
// update the most expensive price to the current price and
// update the name of the most expensive product to current product's name
if(currProdPrice > expProdPrice) {
expProdPrice = currProdPrice;
expProdName = currProdName;
}
}
System.out.println("\nMost expensive product is:\n\nProduct name:\t" + expProdName +
"\nProduct price:\t" + expProdPrice + "$");
}
关于java - Product Loop 用户问有多少 Product Most Expensive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25985239/
我有这个gradle命令行,可以完美地工作: /gradle app:testalldevicesproductionenv -Pandroid.testInstrumentationRunnerAr
因此,我使用 NativeBase 作为组件框架来开发 React Native 应用程序。 我正在使用卡片组件。 这是我的代码: render(){ return(
假设我有这样的Kotlin代码: val var1:String? = isVar1Present() val var2:String? = isVar2Present() val var3:Stri
我想要一些有关当前正在使用的程序的指导,如果用户两次输入相同的值,我已经成功创建了一对整数并处理了异常。我一直坚持执行创建对的相同过程,但不是整数,它必须是字符串。 我的一个建议是更改有序对的随机生成
我的 node.js e2e 测试有问题。我想等待 2 个 promise 解决。但由于某种原因,当我使用 Q.all 时,它只是卡住了我的应用程序。我正在使用 kriskowal 的 Q 1.0.0
实际上我已经开发了使用 Hdfs 存储图像的应用程序。现在我想迁移服务器并在新服务器中再次设置 hadoop。我如何将 HDFS(旧服务器)中的图像文件备份到新服务器中的 HDFS? 我尝试使用 Co
我想在GCP上建立一个完全自动化的CI / CD管道。在Cloud Build中,我已经有了一个cloudbuild.yaml,它可以构建Dockerfile并将构建的Docker镜像推送到Conta
我刚刚开始使用Docker,并能够使用Ubuntu 14.03 / LXDE / VNC设置Docker镜像,由于我可以从外部连接到VNC服务器,因此可以很好地工作。 现在,我试图理解Docker的网
我有 Talend Studio Data Intergration 6.2.1。作业导出为 .war,作为 Web 服务在服务器上执行。 我的问题是,有什么方法可以找出哪个应用程序调用我的 ws?
这个问题在这里已经有了答案: Why is super.super.method(); not allowed in Java? (22 个答案) 关闭 9 年前。 我怀疑我想做的事情是否可行。我有
我似乎无法找到正确的方式来表达这一点以进行 Google 搜索。 当我使用 q.all 并且只有一两个失败时(在 Node.js 中)会发生什么。我需要为我使用 Promise 的所有成功实例输入 .
Closed. This question needs to be more focused. It is not currently accepting answers. Learn more。 想
我已经整理了一个宏,它允许我将数据从一张表存档到另一张表,但是我无法让它在之后清除信息。第一列包含我不想清除的数字,现在它只是清除 B 列中的数据。 如果有人可以看看这个,我会非常感激。 'Sub a
我有一个 C# 程序可以从 .txt 文件创建 Excel 文件报告。 它工作完美,但有时(经常)当我打开一个电子表格时,Excel 会打开 2 个电子表格: 1 我保存的文件。1 有一些名为“Pla
为什么不玩 onclick="catch()"?我不明白。 function catch () { alert("safsf"); } ... 最佳答案 catch 是
在 Q 中,有哪些方法可以在 where 子句中使用嵌套查询的结果? 我正在寻找类似于 SQL 语句的内容。 select from food where type_id in ( selec
虽然这段代码可以工作: var promise = function(val) { var _val = val; return setTimeout(function(_val) {
自Mozilla和Google宣布,他们打算将来使用默认设置通过HTTPS激活DNS,并且IETF正式批准了该草案(https://datatracker.ietf.org/wg/doh/about/
OnClickListener 无法与 ScrollView 一起使用,因为“扩展了 Fragment”。我该如何使用它呢?一个例子就足够了。谢谢.. 更新Fragment1.java package
char name[20]=""; char address [50]= ""; do{ printf("Input your name [1..20] : "); scanf("%s
我是一名优秀的程序员,十分优秀!