2011-04-28 110 views
0

我想要做的是要求用户列出项目,并创建两个数组 - 一个用于itemName,另一个用于itemPrice。我的程序,现在只用ITEMPRICE交易和没有的我怎么能在一个组合两个阵列输出两个阵列组合的列表,像这样的指示:Java - 组合两个数组?

面包 - 1.20

牛奶 - 2.00

这是我到目前为止,两个数组,但名称数组真的不包含在任何东西。谢谢!

public class TaxClass 
{ 
private Input newList; 
/** 
* Constructor for objects of class Tax 
* Enter the number of items 
*/ 
public TaxClass(int anyAmount) 
{ 
    newList = new Input(anyAmount); 
} 
/** 
* Mutator method to add items and their cost 
* Enter the sales tax percentage 
*/ 
public void addItems(double anyTax){ 
    double salesTax = anyTax; 
    newList.setArray(salesTax); 
} 
} 

public class Input 
{ 
private Scanner keybd; 
private String[] costArray; 
private String[] itemArray; 

/** 
* Constructor for objects of class Scanner 
*/ 
public Input(int anyAmountofItems) 
{ 
    keybd = new Scanner(System.in); 
    costArray = new String[anyAmountofItems]; 
    itemArray = new String[anyAmountofItems]; 
} 
/** 
* Mutator method to set the item names and costs 
*/ 
public void setArray(double anyValue){ 
    for(int index=0; index < itemArray.length; index++){ 
    System.out.println("Enter the item name: "); 
    itemArray[index] = keybd.next();} 
    for(int indexa=0; indexa < itemArray.length; indexa++){ 
    System.out.println(itemArray[indexa]); 
    double totalTax=0.0; 
    double total=0.0; 
    for(int indexc=0; indexc < costArray.length; indexc++){ 
     System.out.println("Enter the item cost: "); 
     double cost = Double.valueOf(keybd.next()).doubleValue(); 
     totalTax = totalTax + (cost * anyValue); 
     total = total + cost; 
    } 
    System.out.println("Total tax: " + totalTax); 
    System.out.println("Total cost pre-tax: " + total); 
    System.out.println("Total cost including tax: " + (total+totalTax)); 
} 
} 
+2

是不是有一个原因,你不能创建一个对象,例如,称为'Item'有两个字符串数据成员,其中包含特定项目的名称和价格,然后创建一个'Item'数组S' – 2011-04-28 20:26:34

+0

用'keybd.nextDouble();'替换'Double.valueOf(keybd.next())。doubleValue();'。 – 2011-04-28 20:27:18

回答

7

你必须认为它是Java的方式。 完全忘记阵列。用两个字段(称为nameprice)创建一个类(如Item),并将每个Item放入一个LinkedList。或者像其他人所建议的那样创建一张地图,但这不那么简单,而且对于您来说更加迫切的就是。

这甚至可以让你添加第三个字段,而不需要重新考虑你的代码。它被称为面向对象编程。

但是在C语言中,为了避免发疯,你会创建一个包含两个元素的结构体。在Java中,这更简单,因为Java是一种高级面向对象的语言,并且没有内存管理可供您执行。只需使用编程语言提供的设施即可。他们很多,并且工作。 :)

+0

是的,Java是一种面向对象的语言。如果您不使用对象,请返回编写C或FORTRAN。 – duffymo 2011-04-28 20:32:02

+0

家伙,这是家庭作业,所以使用数组可能是必须的。这个练习可能有缺陷,但它就是这样。 – MeBigFatGuy 2011-04-29 03:33:38

+0

在这种情况下,他应该使用一个数组,但最少_是一个Item对象的数组。现在,在Java中,通过索引匹配的几个数组是不可接受的......即使在C中,我从来没有这样做过 – gd1 2011-04-29 07:08:31

5

这似乎是乞求一个地图,真的。但是,如果您可以依靠相同的索引将相关项目放入两个不同的阵列中,则可以安全地使用该索引关联这两个项目。所以如果'面包'进入itemName [5],'1.20'进入itemPrice [5],那么索引'5'将绑定这两者。找到'面包'的索引,你可以在另一个阵列上使用该索引来获得它的价格。

请记住,您需要注意的是,可以通过依赖关联项放入两个阵列上的相同索引。如果你不能,这会失败,非常可怕。一个更好的方法是Giacomo的答案 - 创建一个很好的类,将整齐地封装所有这些数据,并允许它存储没有所有这些查找麻烦。

+0

正确的答案,但它确实很可怕,它不是Java的方式。 :) – gd1 2011-04-28 20:30:35

+0

赞成,同意。我会提高你的答案。 – Doug 2011-04-28 20:31:17

+0

+1“请求地图”。 – duffymo 2011-04-28 20:32:17