如何从用户输入项目(名称,成本,优先级)中将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();
答案 0 :(得分: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>();
答案 1 :(得分: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), ...];
答案 2 :(得分:2)
您可以做的是创建一个类,并使用构造函数来帮助传递参数。然后,您可以创建此类的实例,并使用它将参数设置为您需要的任何内容(即名称,价格等)。然后使用Scanner
接受用户输入,我会做的是ArrayList
(我称之为ItemData)。然后,使用ArrayList
将实例添加到.add(this)
。这是每个步骤的代码:
传递构造函数中的参数:
public class ItemData{
public ItemData(String name, double cost, int priority){
}
}
在输入结尾处的ItemData
课程中创建Main
的新实例:
ItemData itemData = new ItemData(name, cost, priority);
制作ArrayList
字段(确保导入java.util.ArrayList
和java.util.List
):
List<ItemData> dataStorage = new ArrayList<ItemData>();
将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);
}
}
}
答案 3 :(得分: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对象的大小都相同是不安全的。
使用“List” - 或在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
Creating an Arraylist of Objects
答案 4 :(得分: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对象。
希望这有帮助!