重写equals方法新问题
rd828 2006-06-14 10:35:10 1)在使用200卡拨打电话时,如果已经输入了正确的卡号、密码,成功的登录到交换机并建立连接,则不需要再输入卡号、密码(例如在查询了电话卡中剩余金额后再拨打电话就不需要重新输入卡号、密码);如果没有建立连接,则需要输入卡号和密码。
2)根据200卡的这一特点,编写程序实现其余额查询功能。(其它情况在符合逻辑的前提下可以假设)
覆写object类的equals方法,实现比较信息的功能
import java.io.*;
public class Card {
private String CardNum;
private String CardPwd;
private int CardBalance;
private boolean isConnected;
public Card(String CardNum, String CardPwd, int CardBalance) {
this.CardNum = CardNum;
this.CardPwd = CardPwd;
this.CardBalance = CardBalance;
this.isConnected = false;
}
public Card(String CardNum, String CardPwd) {
this.CardNum = CardNum;
this.CardPwd = CardPwd;
this.CardBalance = 0;
this.isConnected = false;
}
public String getCardNum() {
return CardNum;
}
public String getCardPwd() {
return CardPwd;
}
public int getCardBalance() {
return CardBalance;
}
public void setisConnected(boolean isConnected) {
this.isConnected = isConnected;
}
public boolean equals(Object other) {
if (other == this) {
return true;
}
if (other == null) {
return false;
}
if (getClass() != other.getClass()) {
return false;
}
if (!(other instanceof Card)) {
return false;
}
Card card = (Card) other;
return card.CardNum == CardNum && card.CardPwd == CardPwd;
}
public int hashCode() {
return (CardNum.hashCode() + this.CardPwd.hashCode()) * 31;
}
public static void main(String args[]) throws IOException {
Card a = new Card("1000", "123456", 9999);
Card b = new Card("1001", "123456", 999);
Card c = new Card("1002", "123456", 99);
String num = "";
String password = "";
byte buffer[] = new byte[256];
byte buffer1[] = new byte[256];
while (!a.isConnected && !b.isConnected && !c.isConnected) {
System.out.print("Please enter your acount:");
int count = System.in.read(buffer);
for (int i = 0; i < count - 2; i++) {
num += (char) buffer[i];
}
System.out.print("Please enter your password:");
int count1 = System.in.read(buffer1);
for (int i = 0; i < count1 - 2; i++) {
password += (char) buffer1[i];
}
/*
* 下面写成Card temp = new Card(num, password);
* 所有判断都不通过
* 写成Card temp = new Card ("1000","123456")
* 就能通过
* 为什么
*/
Card temp = new Card(num, password);
if (a.equals(temp)) {
a.setisConnected(true);
System.out.println(a.getCardNum() + " have logined");
System.out.println("Your account's balance is"
+ a.getCardBalance());
} else if (b.equals(temp)) {
b.setisConnected(true);
System.out.println(b.getCardNum() + "Have logined");
System.out.println("Your account's balance is "
+ b.getCardBalance());
} else if (c.equals(temp)) {
c.setisConnected(true);
System.out.println(c.getCardNum() + "Have logined");
System.out.println("Your account's balance is"
+ c.getCardBalance());
}
}
}
}