2015-10-18 102 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

我會將其重新設置爲私密,我只是將所有內容公開化爲了解封裝與我的問題有什麼關係! –

相關問題