【发布时间】:2015-11-04 15:15:52
【问题描述】:
我正在尝试了解如何获取 Customer 对象的名称和食物,当它已经添加到队列中时?所以说我想在添加到队列后使用第一个客户对象的名称和食物元素打印一个字符串?队列窥视方法是占位符,因为我不确定在将对象添加到队列后如何访问对象的名称和食物。如果我打印 peek 方法,它只会给我内存位置,而不是对象食物或名称。
结果会是这样的:
“您要处理什么:比萨饼还是沙拉?
沙拉
詹姆斯的沙拉做好了!”
代码:
主类:
import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.LinkedList;
import java.util.Queue;
public class Main {
public static void main(String[] args) throws FileNotFoundException {
File customerTxt = new File("customer.txt");
Queue<Customer> pizza = new LinkedList<Customer>();
Queue<Customer> salad = new LinkedList<Customer>();
try {
Scanner readCus = new Scanner(customerTxt);
Scanner readFood = new Scanner(System.in);
while (readCus.hasNextLine()) {
String line = readCus.nextLine();
String[] strArray = line.split(",");
String customerName = strArray[0];
String customerFood = strArray[1];
Customer cus = new Customer(customerName, customerFood);
if (customerFood.equalsIgnoreCase("salad")) {
salad.add(cus);
}
if (customerFood.equalsIgnoreCase("pizza")) {
pizza.add(cus);
}
}
if (pizza.isEmpty() == false && salad.isEmpty() == false) {
System.out.println("What kind of food would you like to make?");
String foodChoice = readFood.nextLine();
if (foodChoice.equalsIgnoreCase("salad")) {
System.out.println(salad.peek());
}
if (foodChoice.equalsIgnoreCase("pizza")) {
System.out.println(salad.peek());
}
}
if (pizza.isEmpty() == true && salad.isEmpty() == false) {
System.out.println("There are no Pizzas left to process. I will just finish the rest of the Salads");
while (salad.isEmpty() == false) {
System.out.println(salad.peek());
}
}
if (pizza.isEmpty() == false && salad.isEmpty() == true) {
System.out.println("There are no Salads left to process. I will just finish the rest of the Pizzas");
while (pizza.isEmpty() == false) {
System.out.println(pizza.peek());
}
}
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
客户类别:
public class Customer {
public String name = "";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String food = "";
public String getFood() {
return food;
}
public void setFood(String food) {
this.food = food;
}
public Customer(String customerName, String customerFood) {
this.name = customerName;
this.food = customerFood;
}
}
【问题讨论】:
-
覆盖 Customer 类中的
toString()以包含食物和名称值 -
顺便说一句,当
! <boolean value>很好时,找到<boolean value> == false非常难看。也许这只是我,但我认为您应该将您的pizza.isEmpty() == false && salad.isEmpty() == false更改为! pizza.isEmpty() && ! salad.isEmpty()或!(pizza.isEmpty() || salad.isEmpty())
标签: java oop linked-list queue