所以我对下一步该做什么有疑问。我正在研究这个项目并且要求是。
当地一家咖啡店向顾客出售下面显示的各种不同商品。系统会要求您编写可用于跟踪这些项目的Java应用程序。此外,该程序提供了打印项目列表的方法。
Item Name Price
Coffee $1.00
Water $2.00
Milk $1.50
Bagel $1.25
Donut $0.75
您的程序将创建一个名为Item的类。该课程具有以下内容:
创建此类后,您将编写名为CoffeeDriver的第二个类。该类有以下方法:
到目前为止,这就是我所拥有的一切。我很难想到如何对数组进行排序。因此,如果我排序2个不同的数组,我如何保持它们的正确顺序。就像例如coffee = $1
一样,我如何对它进行排序并将它们保持在一起。
import java.util.Scanner;
public class CoffeeDriver {
//main method
public static void main (String[] args){
String[] itemName = {"Coffee, Water, Milk, Donut, Bagel"};
double[] itemPrice = {1.00, 2.00, 1.50, 0.75, 1.25};
Scanner input = new Scanner(System.in);
String decision;
System.out.println ("Welcome to Wings Coffee Shop");
System.out.println ("We have a great list of tasty items on our menu.");
System.out.println ("Would you like to see these items sorted by");
System.out.println ("name or by price? (n/p): ");
decision = input.nextLine();
if (decision == "n"){
sortName(itemName);
}
else {
sortPrice(itemPrice);
}
}
//method to sort by item name and display
public static void sortName (String[] array){
for (int i = 0; i < array.length; i++){
System.out.println (array[i].toString());
}
}
//method to sort by item price and display
public static void sortPrice (double[] array){
for (int i = 0; i < array.length; i++){
System.out.println (array[i]);
}
}
}
public class Item {
private String name;
private double price;
Item(String itemName, double itemPrice){
itemName = name;
itemPrice= price;
}
public String getName(){
return name;
}
public void setName(String itemName){
itemName = name;
}
public double getPrice(){
return price;
}
public void setPrice(double itemPrice){
itemPrice = price;
}
}
答案 0 :(得分:3)
更正项类定义。
您需要为字段分配参数(在OP中,您为参数指定了字段)
使用Comparator对象参数实现单个字段的排序。
List<Item> items=new ArrayList<Item>();
items.add(new Item("A",1.2));
items.add(new Item("Z",10.2));
items.add(new Item("B",2.3));
items.add(new Item("Y",5.4));
items.add(new Item("B",1.3));
java.util.Collections.sort(items,new Comparator<Item>()
{
public int compare(Item a,Item b)
{
if(a.getName().compareTo(b.getName())>0)
return 1;
else
if(a.getName().compareTo(b.getName())<0)
return -1;
else
return 0;
}
public boolean equals(Object a)
{
return false;
}
});
答案 1 :(得分:0)
“我很难思考如何对数组进行排序”
你可以看看'java.util.Collections'类。它包含许多有用的方法,包括用于排序列表的工具。您还需要了解如何实现“比较器”对象。
编辑:还要仔细考虑你想要排序的内容。按价格排序项目和排序价格之间存在差异。
我认为这是作业,所以我不会给你完整的答案,但希望这会有所帮助。
答案 2 :(得分:0)
尝试查看应该促进您需要的Arrays.sort。
答案 3 :(得分:0)
你不会并行排序两个数组(这是可能的,但不是在Java API中,因此必须由你自己完成),但是从名称和价格信息创建Item对象(在数组或集合中) ,然后对此数组/ List进行排序(或使用像TreeSet这样的已排序集合)。
为此,您可能需要查看java.util.Comparator
和java.util.Collections.sort
(或java.util.Arrays.sort
)。
答案 4 :(得分:0)
伪Java代码(使用例如(Double)而不是double的对象表示会更容易,因为我们可以使用在对象级别实现的现有compareTo方法。)
class Item {
private final String name;
private final Double cost;
:
: //Getters and setters
:
};
public static void sortByName(List<Item> items) {
Collections.sort(items, new Comparator<Item>() {
public int compare(Object o1, Object o2) {
return (Item)o1.getName().compareTo(o2);
}
public boolean equals(Object o1) {
return ((Item)o1).getName().equals((Item)o2).getName()) )
}
});
public static void sortByPrice(List<Item> items) {
Collections.sort(items, new Comparator<Item>() {
public int compare(Object o1, Object o2) {
return (Item)o1.getCost().compareTo(o2.getCost());
}
public boolean equals(Object o1) {
return ((Item)o1).getCost().equals((Item)o2).getCost()) )
}
});