4

我如何将用户输入项目(名称、成本、优先级)中的 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();
4

5 回答 5

8

“我如何将用户输入项目(名称、成本、优先级)中的 3 个项目转换为一个对象项目”

如果我理解正确,解决方案是开设一个新课程。将其称为与您正在做的事情相关的任何事情

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

然后您可以使用您的相关信息创建一个新的“数据”类:

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

举个例子,随机信息。您可以根据需要制作任意数量的这些独特对象,并将它们添加到数组或 ArrayList 中,具体取决于您想要执行的操作:

Data[] myArray = new Data[100];
//or
List<Data> myList = new ArrayList<Data>();
于 2013-07-19T01:52:57.663 回答
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), ...];
于 2013-07-19T01:52:14.090 回答
2

您可以做的是创建一个类,并使用构造函数来帮助传递参数。然后,您可以创建此类的一个实例,并使用它将参数设置为您需要的任何内容(即名称、价格等)。然后使用 接受用户输入Scanner,而我要做的是制作一个ArrayListof(我将其称为 ItemData)。然后,将该实例添加到ArrayListusing .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.ArrayListjava.util.List):

    List<ItemData> dataStorage = new ArrayList<ItemData>();
    
  4. 将 的实例添加到ItemData构造函数中:ArrayListItemData

    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);
        }
    }
}
于 2013-07-19T02:32:41.640 回答
1

您应该尝试创建一个用户定义类型,它充当数据结构来保存您想要的值。

由于 java 是一种面向对象的语言,因此您可以使用类创建用户定义类型。下面,我创建了一个名为 Item 的类,其中包含三个成员数据变量。此类是所有 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 对象的挑战。

希望这可以帮助!

于 2013-07-19T02:09:10.177 回答
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 中用词不当,因为数组具有固定长度的元素。我认为假设您的所有 Item 对象大小相同是不安全的。

使用“列表”——或者在 Java 中,使用“ArrayList”

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

创建项目对象:

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

将商品添加到购物车:

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 创建对象的 Arraylist

于 2013-07-19T02:06:30.993 回答