2015-10-18 64 views
-3

这里是我创建了我“UserNumber”对象,以存储值的用户给我:为什么每次在这种情况下都会得到“0.0”回归给我?

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。

+0

将'setNum'和'showAns'视为方框。您已将您的号码放入'getNum'框中,但您试图将其从'showAns'框中取出。它不在那里。它仍然位于放置它的“getNum”框中。 – NickJ

+0

您已经创建了2个不同的UserNumber实例,其中两个不同的位置拥有一个双精度(每个精度都在其中)。您正在设置第一个实例,然后询问第二个实例的值。它不在那里。 – bigtlb

回答

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

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

0

您创建的名为UserNumbershowAns实例,并用它来打印。但问题是,用户输入的值存储在setNum对象中,而showAns为零。使用setNum打印结果。

另外一个提示,double UserNumber应该是私人的,它打破封装,没有任何理由让它公开,因为你在课堂上有公共getter。

+0

我会将其重新设置为私密,我只是将所有内容公开化为了解封装与我的问题有什么关系! –

相关问题