所以我创建了三个独立的类:
NumberTester
:所有测试用例都去哪里
Number
:将int和double连接到公共字符串myStr和中
MyNumber
:生成另一个名为getStr((的方法,并返回myStr的值。
以下是代码。我的问题是将int和double连接到myStr中,然后运行NumberTester
的main方法。我应该得到17,然后3.0,然后17,3.0,然后173.0的输出。但是,我得到的是null,而不是173.0。有人能帮我解决这个问题吗?
输出:
17
3.0
17 , 3.0
173.0
public class NumberTester
{
public static void main(String args[]){
MyNumber me = new MyNumber(17, 3.0);
System.out.println(me.num.myInt);
System.out.println(me.num.myDouble);
System.out.println(me.getBoth());
System.out.println(me.getStr());
}
}
public class Number
{
public int myInt;
public double myDouble;
public String myStr;
public Number(int k, double d){
myInt = k;
myDouble = d;
myStr = myInt + "" + myDouble;
}
public String toString(){
return (myInt + " , " + myDouble);
}
}
public class MyNumber
{
private int myInt;
private double myDouble;
public Number num;
public Number myStr;
public MyNumber(int i, double d){
myInt = i;
myDouble = d;
num = new Number(myInt, myDouble);
}
public Number getBoth(){
return num;
}
public Number getStr(){
return myStr;
}
}
修复Number类。
public String toString(){
return myStr;
}
用上述方法代替
public String toString(){
return (myInt + " , " + myDouble);
}
这个。
修复您的MyNumber类
public Number getStr(){
return num;
}
return num,因为您的myStr of Number为null,所以您根本不使用它。这就是为什么控制台中有null。它没有被初始化。读取java基元类型和默认值。如果对象没有指定值,则对象为null。如果未指定值,则基本体值具有默认值。可以帮助的链接
您没有在MyNumber中为myStr分配任何内容,因此在创建MyNumber时JVM将其分配为null。(初始化过程(
public class MyNumber {
private int myInt;
private double myDouble;
public Number num;
public Number myStr;
public MyNumber(int i, double d) {
myInt = i;
myDouble = d;
num = new Number(myInt, myDouble);
myStr = new Number(myInt, myDouble);
}
public Number getBoth() {
return num;
}
public String getStr() {
return myStr.getMyStr();
}
}
public class Number {
public int myInt;
public double myDouble;
public String myStr;
public Number(int k, double d) {
myInt = k;
myDouble = d;
myStr = myInt + "" + myDouble;
}
public String toString() {
return (myInt + " , " + myDouble);
}
public String getMyStr() {
return myStr;
}
}
public class NumberTester
{
public static void main(String args[])
{
MyNumber me = new MyNumber(17, 3.0);
System.out.println(me.num.myInt);
System.out.println(me.num.myDouble);
System.out.println(me.getBoth());
System.out.println(me.getStr());
}
}
这会奏效的。