将用户输入的双精度列表添加到数组中

时间:2011-04-28 16:48:54

标签: java

所以我的程序在实例化时询问用户他们想要多少“项目”。然后我的程序创建了两个数组,一个用于“项目名称”,另一个用于“项目价格”。我使用循环让用户在各自的数组中输入每个项目名称和项目价格,但是我丢失了物品价格数组。要使用我的循环,我需要使用“itemprice.length”元素,但是当我不使用字符串时我不能这样做。

用户输入每个项目的“价格”后,我需要对每个数组项应用一个乘数并输出。所以我想,例如,阵列中有3个项目:1.20,1.30,1.40,然后我希望程序向我询问“销售税”,我可以输入0.08,然后它将乘以0.08到每个项目和输出总计。

有没有办法可以让我的程序工作,这样它就可以让用户输入5个项目及其价格,我会以正确的方式进行操作吗?任何方式这样做更容易?谢谢!

public class Input
{
private Scanner keybd;
private String item;
private double cost;
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(){
    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]);
    }
    for(int indexb=0; indexb < costArray.length; indexb++){ 
    System.out.println("Enter the item cost: ");
    costArray[indexb] = keybd.next();}
    for(int indexc=0; indexc < costArray.length; indexc++){
        System.out.println(costArray[indexc]);
    }
}
    /**
     * Accessor method to return the items cost with tax
     */
    public double getTax(){
        return costArray.length;
    }

3 个答案:

答案 0 :(得分:1)

使用Float[]并使用Float.parseFloat(String str)将字符串转换为浮点数。

顺便说一句,在处理金钱时,浮点数是一个坏主意,因为总是存在精确问题。最好使用具有适当最低货币单位(即美国美分等)的整数/多头。

答案 1 :(得分:0)

我不清楚你的问题是什么。您是否遇到物料成本数据问题?你只是在读一个字符串。你应该阅读一系列双打。

costArray = new double[anyAmountOfItems];
// Then when reading use the appropriate Scanner method
costArray[indexb] = keybd.nextDouble();

几种风格的笔记:

  1. 您可能需要考虑使用列表而不是数组。这样您就不必担心修复阵列的大小了。
  2. 不需要在每个for循环中使用新的变量名。它只是增加了混乱。而不是indexa,indexb等只使用i。
  3. 更好的是,在您不需要索引的情况下使用增强型for循环:

    for(String item:itemArray){      的System.out.println(项目);  }

答案 2 :(得分:0)

你可以尝试:

System.out.println("Enter the sales tax: ");
double salesTax = keybd.next();

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 * salesTax);
total = total + cost;
}

System.out.println("Total: " + (total-totalTax));

编辑:计算插入费用期间的总数。