簡體   English   中英

在這種情況下,為什么每次都返回“0.0”?

[英]Why do I get "0.0" returned to me every time in this situation?

這是我創建的“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。

因為您正在創建UserNumber新實例,然后從新實例調用printNumber ,所以double userNumber0.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的默認值。

您創建名為showAnsUserNumber新實例,並使用它進行打印。 但問題是用戶輸入的值存儲在setNum對象中, showAns為零。 使用setNum打印結果。

還有一個提示, double UserNumber應該是私有的,它破壞了封裝並且沒有任何理由將它公開,因為您在類中有公共 getter。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM