首页 > 解决方案 > 打印时如何防止出现 NaN?

问题描述

这是我的任务。

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

    • 股票代码的名为 symbol 的字符串数据字段。
    • 一个名为 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

标签: javaclassmethodsprintingnumbers

解决方案


当您在 main 方法中编写时,这将创建一个与股票类中double previousClosingPrice = 34.5;命名的字段完全分开的变量。previousClosingPrice是的,他们有相同的名字。这并不能使它们神奇地成为同一件事。

在您的主要方法中,您根本不应该有那条线。

如所写,您的主要方法无法调整任何给定股票实例中的 previousClosingPrice 字段;该字段是私有的,没有任何方法可以更改它。我建议你制作一个名为public void setPreviousClosingPrice(double value) {this.previousClosingPrice = value;}.


推荐阅读