gpt4 book ai didi

java - Product Loop 用户问有多少 Product Most Expensive

转载 作者:行者123 更新时间:2023-11-30 08:20:33 29 4
gpt4 key购买 nike

我很喜欢这个程序。有人可以告诉我我做错了什么吗?该程序提示用户输入产品目录中的产品数量。然后程序应提示用户输入产品目录中每个产品的名称和价格。输入所有产品后,程序应输出目录中最昂贵产品的产品信息(名称和价格)。跟踪价格最高的产品的解决方案。

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.

现在,您所做的只是在循环中创建变量 name1price 并且不将它们用于任何事情。在您最后的 print 语句中,打印的 nameprice 是您在程序开始时分配的值。

// 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 expProdNameint expProdPrice 来跟踪最昂贵产品的信息。您还需要两个临时变量,String currProdNameint 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/

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