Java 为什么我会得到;0.0“;在这种情况下每次都会回到我身边?
这是我创建的“UserNumber”对象,用于存储用户给我的值:Java 为什么我会得到;0.0“;在这种情况下每次都会回到我身边?,java,oop,output,Java,Oop,Output,这是我创建的“UserNumber”对象,用于存储用户给我的值: public class UserNumber { public double userNumber; public double getNumber() { return userNumber; } public void setNumber(double n) { userNumber = n; } public void
public class UserNumber
{
public double userNumber;
public double getNumber()
{
return userNumber;
}
public void setNumber(double n)
{
userNumber = n;
}
public void printNumber()
{
System.out.println(userNumber);
}
}
下面是我的类,它获取输入并(出于测试目的)将数字吐出:
public class GetInput
{
public void getInput()
{
Scanner input = new Scanner(System.in);
System.out.println("Please enter any number that could be stored in a double");
double number = input.nextDouble();
UserNumber setNum = new UserNumber();
setNum.setNumber(number);
UserNumber showAns = new UserNumber();
showAns.printNumber();
input.close();
}
}
每次我运行这个程序时,我都会输入10.6004或2.0之类的东西……它总是给我“0.0”
TIA.为什么要创建第二个
showAns
实例?您需要使用为其设置正确输入编号的对象实例
Scanner input = new Scanner(System.in);
System.out.println("Please enter any number that could be stored in a double");
double number = input.nextDouble();
UserNumber setNum = new UserNumber();
setNum.setNumber(number);
// UserNumber showAns = new UserNumber(); don't create another instance
setNum.printNumber(); // use the existing one where you set the double
input.close();
您总是得到
0.0
,因为它是double
的默认值,因为您正在创建UserNumber
的新实例,然后从新实例调用printNumber
,所以double UserNumber
是0.0
您创建了UserNumber
的新实例调用showAns
,并使用它进行打印。但问题是,用户输入的值存储在setNum
对象中,showAns
为零。使用setNum
打印结果
还有一个提示,
double UserNumber
应该是私有的,它破坏了封装,并且没有任何理由将其公开,因为类中有public getter。我会将其设置回private,我只是将所有内容公开,以查看encapulation是否与我的问题有关!将setNum
和showAns
视为框。您已将号码放入getNum
框中,但您正试图将其从showAns
框中取出。它不在那里。它仍然在您放置它的getNum
框中。您已经创建了两个不同的UserNumber实例,两个不同的位置都有一个double(每个内有一个)。您正在设置第一个实例,然后向第二个实例请求值。它不在那里。