用toString返回一个字符串java
我一直在使用一个可比较的类来正确运行和比较,但是当我尝试打印这些值时,它给了我内存地址。我知道这可以通过toString
方法解决,但我不确定如何去做。这里是我的代码:用toString返回一个字符串java
import java.io.*;
import java.util.*;
import java.lang.Object;
public class StreetAddress implements Comparable<StreetAddress>
{
protected int num;
protected String stName;
public StreetAddress(int n, String s){
num = n;
stName = s;
}
public int getNum(){
// returns the street number
return num;
}
public String getName(){
// returns the street name
return stName;
}
public int compareTo(StreetAddress street) throws ClassCastException{
// exception prevents crash if an address is not compared to
// another address
int compareName = this.stName.compareTo(street.stName);
int compareNum = this.num - street.num;
if (compareName < 0){
// first address comes after compared address
return compareName;
}
else if (compareName == 0){ // same address name
if (compareNum < 0){
System.out.println(this.num + "" + this.stName + ", " + street.num + "" + street.stName);
return compareName;
}
else{
System.out.println("");
return compareName;
}
}
else{
// first address comes before compared address
return compareName;
}
}
public static void main(String args[])
{
StreetAddress add1 = new StreetAddress(7864, "cartesian road");
StreetAddress add2 = new StreetAddress(5141, "cartesian road");
StreetAddress add3 = new StreetAddress(1664, "n kings street");
StreetAddress add4 = new StreetAddress(9753, "pioneer parkway");
StreetAddress add5 = new StreetAddress(3643, "starry avenue");
add1.compareTo(add2);
add4.compareTo(add1);
add3.compareTo(add3);
add2.compareTo(add5);
}
}
简单:
@Override
public String toString() {
return String.format("%d %s", num, stName);
}
的@Override
注释是没有必要的,但它肯定是很好的做法。请注意,String.format("%d %s", num, stName)
会生成"[num] [street]"
的字符串。如果您想在将来进行更改,我发现String.format
比字符串连接提供了更大的灵活性。
这不应该包括街道号码,而不仅仅是街道名称? – templatetypedef 2013-04-07 23:13:51
@templatetypedef是 - 我添加了它 – arshajii 2013-04-07 23:15:48
@ A.R.S。那么“%d%s”究竟意味着什么?我以前没见过。 – 2013-04-07 23:37:08
@Override
public String toString() {
return "StreetAddress: num= " + num + ", stName=" + stName ;
}
'''''/ /异常可以防止崩溃'没有它没有。 – EJP 2013-04-11 01:21:47