#java
#java
Вопрос:
Что я пытаюсь сделать, это запросить у пользователя список элементов и создать два массива — один для ItemName и один для ItemPrice. Моя программа прямо сейчас имеет дело только с ItemPrice, и нет никаких указаний на то, как я могу объединить два массива в один, чтобы вывести список обоих объединенных массивов, например:
Хлеб — 1.20
Молоко — 2.00
Вот что у меня есть на данный момент, два массива, но массив имен на самом деле ни во что не включен. Спасибо!
public class TaxClass
{
private Input newList;
/**
* Constructor for objects of class Tax
* Enter the number of items
*/
public TaxClass(int anyAmount)
{
newList = new Input(anyAmount);
}
/**
* Mutator method to add items and their cost
* Enter the sales tax percentage
*/
public void addItems(double anyTax){
double salesTax = anyTax;
newList.setArray(salesTax);
}
}
public class Input
{
private Scanner keybd;
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(double anyValue){
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]);
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 * anyValue);
total = total cost;
}
System.out.println("Total tax: " totalTax);
System.out.println("Total cost pre-tax: " total);
System.out.println("Total cost including tax: " (total totalTax));
}
}
Комментарии:
1. Есть ли причина, по которой вы не смогли создать объект, например, called
Item
, который имеет два элемента string data, которые содержат название и цену для определенного товара, а затем создать массивItem
s?2. Заменить
Double.valueOf(keybd.next()).doubleValue();
наkeybd.nextDouble();
.
Ответ №1:
Вы должны думать об этом с точки зрения Java. Полностью забудьте о массивах. Создайте класс (типа Item
) с двумя полями (назовите их name
и price
) и поместите каждое Item
в LinkedList
. Или создайте map, как предложил кто-то другой, но это менее просто, и для вас более важно удалить массивы.
Это даже позволяет вам впоследствии добавить третье поле, не переосмысливая свой код. Это называется объектно-ориентированное программирование.
Но также и на C вы бы создали структуру, содержащую два элемента, чтобы не сойти с ума. В Java это еще проще, потому что Java является высокоуровневым объектно-ориентированным языком, и вам не нужно управлять памятью. Просто используйте возможности, предоставляемые языком программирования. Их много, и они работают. 🙂
Комментарии:
1. Да, Java — это объектно-ориентированный язык. Если вы не используете объекты, вернитесь к написанию на C или FORTRAN.
2. ребята, это домашнее задание, поэтому использование массивов, вероятно, обязательно. Упражнение может быть ошибочным, но оно такое, какое оно есть.
3. В таком случае он должен использовать массив, но, по крайней мере , массив объектов Item. Пара массивов, сопоставляемых по индексу, в настоящее время в Java неприемлема… Даже на C я никогда не делал этого таким образом
Ответ №2:
Похоже, на самом деле это требует Map. Но если вы можете полагаться на то, что связанные элементы будут помещены в два разных массива с одинаковым индексом, тогда вы можете безопасно использовать этот индекс для связывания двух элементов. Таким образом, если ‘Bread’ входит в ItemName[5], а ‘1.20’ — в ItemPrice[5], то индекс ‘5’ связывает их. Найдите индекс ‘Bread’, и вы можете использовать этот индекс в другом массиве, чтобы получить его цену.
Просто имейте в виду, что вам нужно позаботиться о том, чтобы вы могли полагаться на то, что связанные элементы будут помещены в один и тот же индекс в обоих массивах. Если вы не сможете, это потерпит неудачу, очень ужасную. Лучшим подходом является ответ Джакомо — создайте хороший класс, который будет аккуратно инкапсулировать все эти данные и позволит хранить их без всех этих хлопот с поиском.
Комментарии:
1. Правильный ответ, но это действительно ужасно, и это не способ Java. 🙂