好吧,所以我正在尝试创建一个“销售税计划”,用户可以输入项目并将其添加到一个名为“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]); // } // } }
答案 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()这样的方法来读取数字。