Java应用于数组中的每个项目

时间:2011-04-14 17:55:32

标签: java

好吧,所以我正在尝试创建一个“销售税计划”,用户可以输入项目并将其添加到一个名为“costArray”的数组中。我只知道如何使用字符串(因为我需要costArray.length用于循环)但是我有点迷失。任何人都可以帮我指向正确的方向所以我可以:取一个数字(双精度数)并应用乘数(0.08表示销售税率)和输出总数(双倍)?这是我到目前为止,你能告诉我我是否接近?谢谢!:

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;
    }
    //         /**
    //          * Mutator method to calculate tax on each item
    //          */
    //         public void calculateTax(){
    //             for(int index=0; index < costArray.length; index++){
    //                 System.out.println(0.08 * costArray[index]);
    //             }
    //         }
    }

3 个答案:

答案 0 :(得分:1)

数字存储在字符串中,您必须将其“转换”为实数(双倍值)

这样做的方法如下:

 String s = "-1.234";
 double value = Double.parseDouble(s);

答案 1 :(得分:1)

在Java 8中:

import java.util.stream.DoubleStream;

double taxCoef = 0.08;
double[] prices = {10,20,30};
double total = DoubleStream.of(prices).map(p->p*(1+taxCoef)).sum();

System.out.println(total);

输出:64.80000000000001

(或者,可以先累加再乘)

答案 2 :(得分:0)

阵列是一个坏主意,如果你不知道它们将具有哪种尺寸。为什么不使用ArrayList?如果你不知道它知道:你真的会经常需要它!

循环内的索引名称与'i','n','p,q,r'或'x'很好,并且它们只存在于它们自己的循环中,因此您可以定义一个新的'i'在第二个循环中 - 不需要indexa,indexb,....

对于学习,双倍可能就足够了,但在现实世界中,你不应该使用double作为Money金额,而是使用BigDecimal。分数的位表示会产生令人惊讶的效果。

Scanner已经有像scanner.nextDouble()这样的方法来读取数字。