如何使用自定义对象将int和double连接到字符串,并在另一个类中返回值



所以我创建了三个独立的类:

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());
}
}

这会奏效的。

相关内容

最新更新