2013-07-19 1 views
3

Как я мог бы получить 3 элемента из пользовательского ввода Элемент (имя, стоимость, приоритет) в один предмет объекта и поместить этот объект в массив других объектов?Создание массива из нескольких пользовательских входов разных типов

public class Main { 

    public static void main(String[] args) { 
     //here are my variables. 
     //I'm pretty sure a few of these should be defined 
     // in their own item class. 
     int i=0; 
     String name1; 
     int priority1; 
     double cost1; 

     //String[] shoppingList = new String[7]; 
     String[] item = new String[7]; 

     // I am able to grab input from the user for all 3 elements of 
     // an item object (name, cost, priority) 
     // I am missing how to save these 3 elements into an item object 
     // and create an array for each item object 
     for (i=0; i<item.length;i++) { 

      //I want to capture name, priority, and cost of each item 
      // and add each item as an in 
      Scanner keyboard = new Scanner(System.in); 
      System.out.println("Enter item name " + i); 
      String name = keyboard.next(); 

      Scanner keyboard2 = new Scanner(System.in); 
      System.out.println("Enter the price of item " + i); 
      double cost = keyboard2.nextDouble(); 

      Scanner keyboard3 = new Scanner(System.in); 
      System.out.println("Enter Priority Number " + i); 
      int priority = keyboard3.nextInt(); 

ответ

3

Вы можете попробовать пользовательский класс:

public class Item { 
    private String name; 
    private double price; // you should probably use an 'int' for this 
          // it would be the amount of cents 
          // that would avoid rounding errors 
    private int priority; 
    public Item(String name, double price, int priority) { 
     this.name = name; 
     this.price = price; 
     this.priority = priority; 
    } 
    // (getters and setters) 
    public String getName() { 
     return name; 
    } 
    ... 
} 

Item milk = new Item("milk", 19.99, 3); // wow, expensive milk :P 
Item[] items = [milk, new Item("cheese", 99.99, 2), ...]; 
7

«Как бы я получить 3 элементов из пользовательского ввода пункта (название, стоимость, приоритет) в один объект пункт»

Если Я правильно вас понимаю, решение было бы сделать новый класс. Называйте это как имеет отношение к тому, что вы делаете

class Data { 
    String name; 
    double cost; 
    int priority; 
    Data(String name, double cost, int priority) { //Set variables } 
} 

Затем вы можете создать новый класс «Data» с соответствующей информацией с:

Data myObject = new Data("Input1", 37.50, 2); 

Просто, например, со случайной информацией. Вы можете сделать так как многие из этих уникальных объектов, как вы хотите, и добавить их в массив или ArrayList в зависимости от того, что вы хотите сделать:

Data[] myArray = new Data[100]; 
//or 
List<Data> myList = new ArrayList<Data>(); 
1

Ваш класс вещь:

class Item { 
    String name; 
    double cost; 
    int priority; 
    Item(String name, double cost, int priority) { 
     this.name = name; 
     this.cost = cost; 
     this.priority = priority; 
    } 
} 

" Массив объектов "является неправильным в Java, потому что массивы имеют элементы фиксированной длины. Я не думаю, что можно считать, что все объекты вашего предмета будут одинакового размера.

Используйте "List" - или в Java, в "ArrayList"

ArrayList<Item> myCart = new ArrayList<Item>(); 

Создать объект элемента:

Item myItem = new Item('cheese', 42.12, 1); //cheese is good 

Append товар в корзине:

myCart.add(myItem); 

http://javarevisited.blogspot.com/2011/05/example-of-arraylist-in-java-tutorial.html
http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html Creating an Arraylist of Objects

1

Вы должны попытаться создать пользовательский тип, который будет представлять собой структуру данных для хранения желаемых значений.

Поскольку java - объектно-ориентированный язык, вы можете создать определенный пользователем тип с классом. Ниже я создал класс под названием Item с тремя переменными данных элемента. Этот класс является планом для всех объектов типа элемента. Всякий раз, когда вы создаете новый объект объекта, он будет иметь свои собственные уникальные копии переменных данных элемента.

Для простоты я не инкапсулировал переменные данных элемента, но для будущих программ вы должны объявить переменные данных члена частными и предоставить интерфейс для доступа/изменения их. Оставляя их публичными, это позволяет мне получить доступ к ним с помощью оператора точки (.).

Смотрите следующий код для рабочего примера

import java.util.ArrayList; 
import java.util.List; 
import java.util.Scanner; 


public class Item { 

public String name; 
public int priority; 
public double cost; 

public static void main(String[] args) { 


int itemAmount = 7; 
List<Item> itemList = new ArrayList<Item>(); 


    for (int i=0; i < itemAmount; i++) { 
     Item itemToCreate = new Item(); 
     Scanner keyboard = new Scanner(System.in); 
     System.out.println("Enter item name " + i); 
     itemToCreate.name = keyboard.next(); 


     Scanner keyboard2 = new Scanner(System.in); 
     System.out.println("Enter the price of item " + i); 
     itemToCreate.cost = keyboard2.nextDouble(); 

     Scanner keyboard3 = new Scanner(System.in); 
     System.out.println("Enter Priority Number " + i); 
     itemToCreate.priority = keyboard3.nextInt(); 

     itemList.add(itemToCreate); 
    } // end for 

    for (int i=0; i < itemList.size(); i++) { 
     Item tempItem = itemList.get(i); 
     System.out.println("Item " + tempItem.name + " has cost " + tempItem.cost + " with priority " + tempItem.priority); 
    } 



} // end main 

} // end class 

Вы должны заметить, что я заменил оригинал декларации со структурой ArrayList данных. Это динамическая структура данных, которая может расти, когда вы вставляете в нее элементы. Вы должны взять на себя задачу разрешить неограниченное количество ввода пользователя и учесть неизвестное количество объектов Item в вашем списке.

Надеюсь, это поможет!

+0

да есть много полезной люди там, и я благодарю всех вас! Любые предложения о том, как заставить мой основной метод прекратить получение синтаксических ошибок? public static void main (String [] args() { – user2558595

+0

public static void main (String [] args) { –

2

Что вы можете сделать, это создать класс и использовать конструктор для передачи параметров. Затем вы можете создать экземпляр этого класса и использовать его для установки параметров в нужное вам положение (например, имя, цена и т. Д.). Затем принимайте вход пользователя, используя Scanner, и что бы я сделал, это сделать ArrayList (я буду называть его ItemData). Затем добавьте экземпляр в ArrayList, используя .add(this). Вот код для каждого шага:

  1. Передайте параметры в конструкторе:

    public class ItemData{ 
        public ItemData(String name, double cost, int priority){ 
        } 
    } 
    
  2. Создайте новый экземпляр ItemData в Main классе в конце ввода:

    ItemData itemData = new ItemData(name, cost, priority); 
    
  3. Введите поле ArrayList (обязательно вам нужно включить java.util.ArrayList и java.util.List):

    List<ItemData> dataStorage = new ArrayList<ItemData>(); 
    
  4. Добавить экземпляр ItemData в ArrayList в ItemData конструктор:

    Main.(ArrayList name here).add(this); 
    

Ваш окончательный код должен выглядеть следующим образом:

public class ItemData{ 
    public ItemData(String name, double cost, int priority){ 
     Main.itemData.add(this); 
    } 
} 


import java.util.*; 
public class Main { 
    public static List<ItemData> itemData = new ArrayList<ItemData>(); 
    public static void main(String[] args) { 
     int i=0; 
     String name1; 
     int priority1; 
     double cost1; 
     String[] item = new String[7]; 
     for (i=0; i<item.length; i++) { 
      Scanner keyboard = new Scanner(System.in); 
      System.out.println("Enter item name " + i); 
      String name = keyboard.next(); 
      Scanner keyboard2 = new Scanner(System.in); 
      System.out.println("Enter the price of item " + i); 
      double cost = keyboard2.nextDouble(); 
      Scanner keyboard3 = new Scanner(System.in); 
      System.out.println("Enter Priority Number " + i); 
      int priority = keyboard3.nextInt(); 
      ItemData x = new ItemData(name, cost, priority); 
     } 
    } 
} 
+0

Этот конструктор выглядит настолько простым и ярким, как. Обычно я не пишу java. Это короткий путь определяя и устанавливая this.name, this.cost и this.priority? – FlipMcF

Смежные вопросы