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

时间:2015-10-18 15:21:29

标签: java oop output

这是我的" 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。

3 个答案:

答案 0 :(得分:2)

因为您要创建UserNumber的新实例,然后从新实例调用printNumber,所以double userNumber0.0

答案 1 :(得分:0)

为什么要创建第二个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的默认值。

答案 2 :(得分:0)

您创建名为UserNumber的{​​{1}}的新实例,并使用它进行打印。但问题是用户输入的值存储在showAns对象中,setNum为零。使用showAns打印结果。

另外一个提示,setNum应该是私有的,它打破了封装,没有任何理由让它公开,因为你在课堂上有公共吸气剂。