Переменная Java находится вне области видимости, хотя я уже объявил ее в классе? - PullRequest
0 голосов
/ 06 ноября 2019

Мой компилятор продолжает говорить, что 'cents' в моем методе toString находится вне области видимости, но я не понимаю, почему это так, потому что я уже объявил это в классе.

Вот мой код:

public class Currency
{
private Double value;

// Constructor
public Currency(Double startValue)
{
    value = startValue;
}

// Sets value to newValue
public void setValue(Double newValue)
{
    value = newValue;
}

// Returns the dollar portion of value
// if value is 12.34, returns 12
public Integer getDollars()
{
return value.intValue();
}

// Returns the cents portion of value
// as an Integer
// if value is 12.34, returns 34
public Integer getCents()
{
Integer cents = (int)(value * 100) % 100;
return cents;
}

// Returns a String representation
// in the format
// $12.34
public String toString()
{
return "$" + value + cents;
}

}

Ответы [ 2 ]

0 голосов
/ 06 ноября 2019

так как вы хотите получить две точности (то есть значение формата в% .2f) для значения, вы можете использовать что-то вроде ниже

 // Returns a String representation in the format  $12.34
    public String toString()
    {
    return "$" + String.format("%.2f", value) ;
    }

    // main class

    public static void main(String[] a)
    {
        Currency c = new Currency(12.3423456d);
        System.out.println("Cents: "+c.getCents());

        System.out.println(c);
    }

Вывод: Cents: 34 $ 12,34

0 голосов
/ 06 ноября 2019

Вы объявили центы внутри метода, поэтому у него есть область действия. Вы должны объявить это на уровне класса, как вы это сделали со значением.

private Double value;
private int cents;

В вашем методе вы можете вызвать его так:

cents = (int)(value * 100) % 100;

Это решит вашу техническую проблему. Некоторые люди скажут, что это неправильно, потому что вы рассчитываете центы напрямую из стоимости. Другие скажут, что все в порядке. В конце концов, это зависит от того, как часто вы вызываете функцию, если вы ее вычисляете. В некоторых случаях будет лучше иметь его в дополнительной переменной.

Изменение кода, как показано выше, решит техническую проблему, о которой вы просили.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...