这是我的任务。
写一个名为Stock的类,其中包含:
编写一个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
答案 0 :(得分:1)
在主方法中编写double previousClosingPrice = 34.5;
时,这将创建一个与股票类中名为previousClosingPrice
的字段完全独立的变量。是的,它们具有相同的名称。这并不能使他们神奇地变得一样。
在主要方法中,您根本不应该有该行。
按照书面规定,您的主要方法无法在任何给定的股票实例中调整previousClosingPrice字段;该字段是私有的,没有方法可以更改它。建议您创建一个名为public void setPreviousClosingPrice(double value) {this.previousClosingPrice = value;}
的方法。