如果声明不适合我 - Java

时间:2013-11-28 09:28:48

标签: java logic

我有两个课程:Customer和MovieSeating。 (问题条件在MovieSeating的assignCustomerAt方法中)

public class Customer
{
    private String lastName;
    private String firstName;

    // This constructor sets the first name and last name to "???"
    public Customer(){
          lastName = "???";
          firstName = "???";
    }
      // This method returns a string containing a customer's initials
      // (first characters of firstName and lastName.)
      public String toString()
      {
           String result = firstName.charAt(0) + "." + lastName.charAt(0) + ".";
           return result;
      }        
}

所以something.toString();返回"?.?."

右?

一切都很好但是就是这样。

public class MovieSeating{
public Customer[][] seating;
public int rowNumber;
public int colNumber;

public MovieSeating(int rowNum, int columnNum){
    rowNumber= rowNum;
    colNumber=columnNum;
    Customer thisGuy = new Customer();
    Customer[][] seaTing = new Customer[rowNum][columnNum];
    for(int i = 0; i<rowNum;i++){
        for(int j = 0; j<columnNum; j++){
            seaTing[i][j] = thisGuy;
        }
    }
    seating = seaTing;
}



public boolean assignCustomerAt(int row, int col, Customer tempCustomer){ 
    String a = seating[row][col].toString();
            if(a=="?.?."){     //THE CONDITION IN THIS IF STATEMENT IS THE PROBLEM
                 seating[row][col] = tempCustomer;
                 return true;
            }
            return false;
}

最后一种方法的目的是,当且仅当座位未被占用时(例如,具有首字母“?。?。”的客户所指出),将某人分配到某个地点。但无论如何,当String a的值为“?。?。”时,条件返回false。我已经尝试过并测试过座位[row] [col] .toString();返回“?。?”。确实如此。我已经在每个项目周围加上括号,并尝试制作两个不同的字符串,这个和那个没有任何作用!这就像是说(1 * 1)!= 1.这是什么交易????提前致谢

2 个答案:

答案 0 :(得分:0)

在您比较==而不是Object reference时,无法使用object information比较字符串。

你必须改为

a.equals("?.?."){

答案 1 :(得分:0)

if(a=="?.?."){应为if("?.?.".equals(a)) {