所以我已经在这里待了4个小时,我完全难过了。
创建一个简单的Passenger类,记录乘客的姓名和座位偏好。编写一个程序,重复请求乘客的名字(哨兵圈),然后是用户的座位偏好。首选项将包括行号和座位字母(假设21行和A,B,C和D座位)。在Passenger对象的ArrayList中搜索匹配的名称。如果它已在列表中,请设置其新的座位偏好;否则,创建一个新的Passenger并将其添加到列表的末尾。这是UML http://imgur.com/SkqVUxU
这是我到目前为止的代码。我无法在循环中完成我的操作。而且我不确定我的下一步会是什么。
public class Passenger{
private String name;
private int row;
private int seat;
public Passenger(){
}
public Passenger(String passengerName, int requestedRow, int requestedSeat){
name = passengerName;
row = requestedRow;
seat = requestedSeat;
Scanner sc = new Scanner(System.in);
System.out.println("enter the passenger name or 'stop' to quite: ");
name = sc.next();
do{
System.out.println("what row would you like to sit on? ");
row = sc.nextInt();
System.out.println("what sear would you like to sit on? ");
seat = sc.nextInt();
}while(name == "stop");
}
public String getName(){
return name;
}
public int getRow(){
return row;
}
public int getSeatNumber(){
return seat;
}
public char getSeatCode(){
return seatPreference();
}
public char seatPreference(){
char newSeat = 0;
if(seat == 1){
newSeat = 'A';
}
else if(seat == 2){
newSeat = 'B';
}
else if(seat == 3){
newSeat = 'C';
}
else if(seat == 4){
newSeat = 'D';
}
return newSeat;
}
public void setPreference(int newRow, char newSeat){
}
}
答案 0 :(得分:1)
要比较String
,请使用equals
方法。
do{
System.out.println("what row would you like to sit on? ");
row = sc.nextInt();
System.out.println("what sear would you like to sit on? ");
seat = sc.nextInt();
while(name.equals("stop"));
答案 1 :(得分:1)
在OOP中你不能使用==来比较字符串,因为你只会检查字符串的内存引用。我会使用String.Compare(string1,string2)。如果等于,则返回0,如果不等,则返回-1或返回1.
我也会像这样使用循环
while(String.Comapre(name.ToUpper(), "Q") != 0)
{
}
另外,除非有要求,否则我会使用List<>字典<>或DictionaryList<>而不是ArrayList。
答案 2 :(得分:0)
Java语言规范说明了一切
虽然==可用于比较String类型的引用,例如 等式测试确定两个操作数是否引用 相同的String对象。如果操作数是不同的,则结果为false 字符串对象,即使它们包含相同的字符序列。 可以通过对两个字符串s和t的内容进行相等性测试 方法调用s.equals(t)