如何防止在打印时出现NaN?

时间:2019-09-26 01:48:42

标签: java class methods printing numbers

这是我的任务。

  1. 写一个名为Stock的类,其中包含:

    • 一个名为symbol的股票数据的字符串数据字段。
    • 一个名为name的股票名称字符串数据字段。
    • 一个名为perviousClosingPrice的双数据字段,用于存储前一天的股价。
    • 一个名为currentPrice的双数据字段,用于存储当前时间的股票价格。
    • 使用指定的交易品种和名称创建股票的构造函数。
    • 名为getChangePercent()的方法,该方法返回从previousClosingPrice更改为currentPrice的百分比范围。
  2. 编写一个StockTest类,该类创建一个带有股票代号ORCL,名称为Oracle Corporation且先前收盘价为34.5的Stock对象。将新的当前价格设置为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 个答案:

答案 0 :(得分:1)

在主方法中编写double previousClosingPrice = 34.5;时,这将创建一个与股票类中名为previousClosingPrice的字段完全独立的变量。是的,它们具有相同的名称。这并不能使他们神奇地变得一样。

在主要方法中,您根本不应该有该行。

按照书面规定,您的主要方法无法在任何给定的股票实例中调整previousClosingPrice字段;该字段是私有的,没有方法可以更改它。建议您创建一个名为public void setPreviousClosingPrice(double value) {this.previousClosingPrice = value;}的方法。