【发布时间】:2014-02-27 21:48:09
【问题描述】:
我已经为信用卡类编写了一些代码,粘贴在下面。我有一个接受上述变量的构造函数,并且正在研究一些将这些变量格式化为字符串的方法,以便最终输出类似于
电话号码:1234 5678 9012 3456
有效期:10/14
帐户持有人:鲍勃·琼斯
有效:真
(格式不正确 - 我不确定该怎么做,希望有人可以为我编辑 :))
我的问题是,在行中
String shortYear = Integer.toString(expiryYear).substring(2,4);
为什么以下方法不起作用:
toString(argument).substring(2,4)
我原以为它已经起作用了(expiryYear 本质上被声明为 int 类型的实例变量)。我查阅了我的书(The official Java Tutorial also found online),似乎找不到任何东西。我什至不知道 Integer.toString,一位朋友在尝试使用 toString() 后告诉我,所以如果有人也能告诉我在哪里可以找到这些方法(我不要认为他们在我的书中)
public class CreditCard {
private int expiryMonth;
private int expiryYear;
private String firstName;
private String lastName;
private String ccNumber;
public CreditCard(int expiryMonth, int expiryYear, String firstName, String lastName, String ccNumber) {
this.expiryMonth = expiryMonth;
this.expiryYear = expiryYear;
this.firstName = firstName;
this.lastName = lastName;
this.ccNumber = ccNumber;
}
public String formatExpiryDate() {
String shortYear = Integer.toString(expiryYear).substring(2, 4);
String expiryDate = expiryMonth + "/" + shortYear;
return expiryDate;
}
public static void main(String[] args) {
CreditCard cc1 = new CreditCard(10, 2014, "Bob", "Jones", "1234567890123456");
System.out.print(cc1.formatExpiryDate());
}
}
【问题讨论】:
-
因为你没有带参数的
toString函数。 -
要使用这个函数需要定义toString,它不像过程语言(比如C),是OOP
-
不是 toString 一个公共方法,它是对象类的一部分(它是每个实现类的超类),所以我应该能够访问它?还是我在这里想错了?
-
fwiw 你可以使用
year % 100来获取年份的最后两位数字(作为整数) -
toString 确实是
object的方法,但是它没有定义参数。为了让它调用object上的方法,你必须在不带任何参数的情况下调用它,它的行为可能会有所不同。
标签: java class object tostring