Java, применяющая умножение к каждому элементу в массиве

#java

#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]);
    //             }
    //         }
    }
  

Ответ №1:

Число хранится в строке, и вы должны «преобразовать» его в действительное число (двойное значение)

Способ сделать это показан здесь:

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

Ответ №2:

В 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

(в качестве альтернативы, можно сначала суммировать, а затем умножать)

Ответ №3:

Массивы — плохая идея, если вы не знаете заранее, какой размер они будут иметь. Почему бы не использовать ArrayList? Если вы не знаете этого правильно, знайте: вам это действительно понадобится часто!

Имена индексов внутри цикла хорошо сочетаются с ‘i’, ‘n’, ‘p, q, r’ или ‘x’, и они существуют только в своем собственном цикле, поэтому вы можете определить новый ‘i’ во втором цикле — нет необходимости в indexa, indexb, … .

Для обучения может быть достаточно double, но в реальном мире вы должны использовать double не для денежных сумм, а для BigDecimal. Битовое представление дробей приводит еще к удивительным эффектам.

И у сканера уже есть такие методы, как scanner.nextDouble (), для чтения числа.