#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 (), для чтения числа.