【问题标题】:Return Information of the Stock with the Biggest Percent Change百分比变化最大的股票的回报信息
【发布时间】:2018-01-24 03:14:44
【问题描述】:

我想知道是否有人可以帮助我开发所需的方法,以便仅打印出前收盘价与当前收盘价之间百分比变化最大的股票的信息。这里有一些代码可能有助于理解我所指的内容。

public class driveStockList {
public static void main(String[] args) {
    //Stock stock = new Stock();

    Stock[] Stocks = new Stock[6];

    Stocks[0] = new Stock("ORCL", "Oracle Corporation");
    Stocks[0].setPreviousClosingPrice(34.50);
    Stocks[0].setCurrentPrice(34.35);
    Stocks[0].getChangePercent();

    Stocks[1] = new Stock("MSFT", "Microsoft Corporation");
    Stocks[1].setPreviousClosingPrice(90.13);
    Stocks[1].setCurrentPrice(90.19);
    Stocks[1].getChangePercent();

    Stocks[2] = new Stock("GOOGL", "Alphabet Inc.   ");
    Stocks[2].setPreviousClosingPrice(1139.10);
    Stocks[2].setCurrentPrice(1139.0);
    Stocks[2].getChangePercent();

    Stocks[3] = new Stock("AAPL", "Apple Inc.      ");
    Stocks[3].setPreviousClosingPrice(179.10);
    Stocks[3].setCurrentPrice(179.45);
    Stocks[3].getChangePercent();

    Stocks[4] = new Stock("NFLX", "Netflix, Inc.    ");
    Stocks[4].setPreviousClosingPrice(217.50);
    Stocks[4].setCurrentPrice(217.69);
    Stocks[4].getChangePercent();

    Stocks[5] = new Stock("INTC", "Intel Corporation");
    Stocks[5].setPreviousClosingPrice(44.39);
    Stocks[5].setCurrentPrice(44.59);
    Stocks[5].getChangePercent();

    outputStockItems (Stocks);
    outputStockBiggestChange(Stocks);
}

private static void outputStockItems(Stock[] Stocks) {
    System.out.printf("Symbol\t \tName         PreviousClosingPrice\tCurrent Price");
    System.out.printf("\n----------------------------------------------------------------------");
    for ( int i = 0; i < Stocks.length; i++ ) {
        System.out.printf("\n" + Stocks[i].getSymbol());
        System.out.printf("\t" + Stocks[i].getName());
        System.out.printf("\t     " + Stocks[i].getPreviousClosingPrice());
        System.out.printf("       \t" + Stocks[i].getCurrentPrice());
    }

}

public static void outputStockBiggestChange(Stock[] p) {
for ( int i = 5; i < Stocks.length; i++ ) {
        System.out.printf("\n" + Stocks[i].getSymbol());
        System.out.printf("\t" + Stocks[i].getName());
        System.out.printf("\t     " + Stocks[i].getPreviousClosingPrice());
        System.out.printf("       \t" + Stocks[i].getCurrentPrice());
}

我已经列出了方法,但我不确定如何为百分比变化挑选出一个奇异的最大元素/值。为 outputStockBiggestChange() 提供的主体是我认为挑选出变化最大的股票的内容,但我确信代码旨在遍历所有值,而不是手动将其定向到该元素。

【问题讨论】:

  • 显然你会计算百分比,然后比较看看哪个百分比变化最大,不是吗?如果你用铅笔、纸和计算器来做,你会怎么做?
  • @KenWhite 我有在单独的类中查找百分比变化的公式,并得到了正确打印在屏幕上的答案。我的问题是我正在努力挑选出一个数组元素来显示它的所有信息
  • 你在纠结什么?您跟踪索引和百分比。(与Stocks 具有相同数量元素的数组会使这非常简单)。当您确定哪个变化最大时,您从 Stocks 检索位于同一索引处的条目。
  • 好的,那么我是否需要创建另一个只关注百分比变化的数组,还是我误解了?因为我确实在发布问题之前尝试为 outputStockBiggestChange 编写方法体。我所做的只是更改 ( int i = 0; i
  • 如果您愿意,可以使用循环来完成。但是,您需要自己做功课。如果您完全陷入困境,请向您的教练寻求帮助。我已经提供了建议,您继续提出更多关于而不是油炸来实施它们的问题。如果我们为您完成作业,您将一无所获。祝你好运。

标签: java arrays getter-setter


【解决方案1】:
float maxDiff = 0;

for ( int i = 0; i < Stocks.length; i++ ) {
    float diff = Stocks[i].getPreviousClosingPrice() - Stocks[i].getCurrentPrice();
    diff = Math.abs(diff);
    if(diff > maxDiff) { 
        maxDiff = diff;
    }
}

【讨论】:

  • 如果您为他们完成整个家庭作业,这将大大违背其目的。
猜你喜欢
  • 1970-01-01
  • 2012-09-04
  • 1970-01-01
  • 2012-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多