Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我会得到;0.0“;在这种情况下每次都会回到我身边?_Java_Oop_Output - Fatal编程技术网

Java 为什么我会得到;0.0“;在这种情况下每次都会回到我身边?

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

这是我创建的“UserNumber”对象,用于存储用户给我的值:

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(每个内有一个)。您正在设置第一个实例,然后向第二个实例请求值。它不在那里。