我正在尝试创建一个允许用户为超市制作目录的Java应用程序,然后显示用户输入目录的所有产品。现在我在填充应该由用户输入填写的对象数组时遇到问题。 输出应如下所示(用户输入粗体):
输入产品说明(或#停止):浓缩粉状水 输入产品代码: P3487 输入产品单价: $ 2.50 输入产品单位词组:每个数据包
输入产品说明(或#停止): Distilled Moonbeams 输入产品代码: K3876 输入产品单价: $ 3.00 输入产品单元短语:十二
输入产品说明(或#停止):反重力丸 输入产品代码: Z9983 输入产品单价: $ 12.75 输入产品单位词组: for 60
输入产品说明(或#停止):#
您的目录: P3487,冷凝水,每包2.50美元。 K3876,Distilled Moonbeams,每打3.00美元。 Z9983,抗重力丸,60美元,12.75美元。
我写的代码:2个类 第1课:
public class Catalog {
private String description ;
private String code ;
private double price ;
private String phrase ;
int counter = 0;
private Catalog [] list = new Catalog [100];
public Catalog (String productDescription , String productCode , double productPrice , String productPhrase)
{
description = productDescription;
code = productCode;
price = productPrice;
phrase = productPhrase;
}
public void setDescription (String productDescription)
{
description = productDescription;
}
public String getDescription ()
{
return description;
}
public void setCode (String productCode)
{
code = productCode;
}
public String getCode ()
{
return code;
}
public void setPrice (double productPrice)
{
price = productPrice;
}
public double getPrice ()
{
return price;
}
public void setPhrase (String productPhrase)
{
phrase = productPhrase;
}
public String getPhrase ()
{
return phrase;
}
第2课:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class CatalogTest {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
String name = null;
String code = null;
double price = 0.0;
String phrase = null;
BufferedReader input = new BufferedReader (new InputStreamReader (System.in));
Catalog product = new Catalog(name,code,price,phrase);
Catalog [] productsArray = new Catalog [100];
for (int i = 0 ; i < productsArray.length ; i ++)
{
System.out.println("Enter product description (or # to stop): ");
name = input.readLine();
if (!("#".equals(name)))
{
productsArray [i] = product;
product.setDescription(name);
System.out.println("Enter product code: ");
code = input.readLine();
productsArray [i] = product;
product.setCode(code);
System.out.println("Enter product unit price: ");
price = Double.parseDouble(input.readLine());
productsArray [i] = product;
product.setPrice(price);
System.out.println("Enter product unit phrase: ");
phrase = input.readLine();
productsArray [i] = product;
product.setPhrase(phrase);
productsArray [i] = new Catalog (name,code,price,phrase);
}
else
{
System.out.println("Your Catalog:");
System.out.printf("%s, %s,$%.2f %s",product.getCode(),product.getDescription(),product.getPrice(),product
.getPhrase());
break;
}
}
}
}
我得到的输出(用户输入粗体): 输入产品说明(或#停止): 浓缩粉末水 输入产品代码: 的 p3487 输入产品单价: 的 2.50 输入产品单位词组: 每个数据包 输入产品说明(或#停止): 蒸馏月光 输入产品代码: 的 k3876 输入产品单价: 3 输入产品单位词组: 十几个 输入产品说明(或#停止): 的# 你的目录: k3876,蒸馏月光,每打3.00美元
所以任何帮助请PLEASE ??
答案 0 :(得分:0)
以下是有效的更新代码......
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class CatalogTest
{
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException
{
// TODO Auto-generated method stub
String name = null;
String code = null;
double price = 0.0;
String phrase = null;
BufferedReader input = new BufferedReader(new InputStreamReader(
System.in));
Catalog product = new Catalog(name, code, price, phrase);
Catalog[] productsArray = new Catalog[100];
for (int i = 0; i < productsArray.length; i++)
{
System.out.println("Enter product description (or # to stop): ");
name = input.readLine();
if (!("#".equals(name)))
{
productsArray[i] = product;
product.setDescription(name);
System.out.println("Enter product code: ");
code = input.readLine();
productsArray[i] = product;
product.setCode(code);
System.out.println("Enter product unit price: ");
price = Double.parseDouble(input.readLine());
productsArray[i] = product;
product.setPrice(price);
System.out.println("Enter product unit phrase: ");
phrase = input.readLine();
productsArray[i] = product;
product.setPhrase(phrase);
productsArray[i] = new Catalog(name, code, price, phrase);
}
else
{
System.out.println("Your Catalog:");
for (int j = 0; j < productsArray.length; j++)
{
if(productsArray[j]!=null)
{
System.out.printf("%s, %s,$%.2f %s,",
productsArray[j].getCode(),
productsArray[j].getDescription(),
productsArray[j].getPrice(),
productsArray[j].getPhrase());
}
}
break;
}
}
}
}
答案 1 :(得分:0)
我没有详细说明已经给出的正确答案,但将来查看ArrayLists或Vectors可能会有所帮助。当您不确定需要存储的项目数量时,两者都是更好的数据结构,因为它们是可增长的数据存储,即您在初始化时无需定义它们的大小。
例如,在原始尝试中,您将productsArray
定义为大小为100.如果用户想要输入101项,该怎么办?使用Vector可以解决这个问题,因为它可以随时增长或缩小。
我是一名软件开发专业的三年级学生,当我开始使用Vector over Arrays时,由于Vector提供的灵活性,编程问题变得更容易解决:)