Как я могу предотвратить появление NaN при печати? - PullRequest
0 голосов
/ 26 сентября 2019

Это моя задача.

  1. Напишите класс с именем Stock, который содержит:

    • Строковое поле данных с именем символа для символа акции.
    • Поле данных String с именем name для имени акции.
    • Двойное поле данных с именем perviousClosingPrice, в котором хранится цена акции за предыдущий день.
    • Двойное поле данных с именем currentPrice, котороесохраняет цену акции за текущее время.
    • Конструктор, который создает акцию с указанными символом и именем.
    • Метод с именем getChangePercent (), который возвращает процентное значение, измененное с previousClosingPrice на currentPrice.
  2. Напишите класс StockTest, который создает объект Stock с символом акции ORCL, именем Oracle Corporation и предыдущей ценой закрытия 34,5.Установите новую текущую цену на 34,35, и отобразите цену - процент изменения.

и

мой код это

public class Stock{
  private String Symbol, Name;
  private double previousClosingPrice, currentPrice;
  public Stock(String stockName, String stockSymbol){
    Name = stockName;
    Symbol = stockSymbol;
  }
  public double getChangePercent(){
    return (previousClosingPrice - currentPrice)/previousClosingPrice * 100;
  }
}

 import java.util.Scanner;
public class StockTest{
  public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    String stockSymbol = "ORCL";
    String stockName = "Oracle Corporation";
    double previousClosingPrice = 34.5;
    double currentPrice = 34.35;
    Stock stock = new Stock(stockName, stockSymbol);
    double percentChange = stock.getChangePercent();
    System.out.println("The company" + stockName + "has a stock price of" + currentPrice +".");
    System.out.println("Which is an increase of " + stock.getChangePercent() + " % increase");
  }
}

и япросто получите этот вывод:

The companyOracle Corporationhas a stock price of34.35.
Which is an increase of NaN% increase

Я хочу показать фактическое число, а не NaN

1 Ответ

1 голос
/ 26 сентября 2019

Когда вы пишете double previousClosingPrice = 34.5; в своем основном методе, это создает переменную, которая полностью отделена от поля с именем previousClosingPrice в вашем классе акций.Да, они имеют одинаковое имя.Это не делает их магически одинаковыми.

В вашем основном методе вообще не должно быть этой строки.

Как написано, ваш основной метод не может настроитьполе previousClosingPrice в любом заданном экземпляре акций;поле является приватным, и нет метода, который может его изменить.Я предлагаю вам сделать метод с именем public void setPreviousClosingPrice(double value) {this.previousClosingPrice = value;}.

...