创建简单的库存库存程序 - 第二次尝试

时间:2012-08-28 22:44:45

标签: java oop stocks

我之前已经问过这个问题并尽可能地遵循反馈,但我仍然存在一个问题,即存储用户输入数组的信息。

这是第一次尝试: OOP Java: Creating a stock inventory program

所以我需要总共有三个班级(这是必需的)。股票,库存和用户界面。该计划的目的是要求用户输入公司的名称,股票评级,价格和股票数量。当然,我必须做其他事情。我认为我对其他人没问题,问题是stockInterface,我在下面发布的最后一段代码。

public class Stock {

private String companyName;
private String stockRating;
private int price;
private int numberOfShares;

public String getCompanyName() {
    return companyName;
}

public int getStockRating() {
    return stockRating;
}

public String getPrice() {
    return price;
}

public int getNumberOfShares() {
    return numberOfShares;
}

public Stock(String companyName, String stockRating, int price, int numberOfShares) {
    super();
    this.companyName = companyName;
    this.stockRating = stockRating;
    this.price = price;
    this.numberOfShares = numberOfShares;
}

import java.util.*;

public class StockInvetory {

private static final int INVENTORY_SIZE = 12;
private Stock [] stocks;

public StockInvetory() {
    stocks = new Stock [INVENTORY_SIZE];

}


public class StockInterface() {
    private static StockInventory stockPortfolio;

        public static void main (String [] args){

    System.out.println ("Stock's name:");
    String stockName = console.next();

    System.out.println ("Stock's rating");
    String stockRating= console.next();

    System.out.println ("Stock's price:");
    int stockPrice = console.nextInt();

    System.out.println ("Numbers of shares: ");
    int numberShares= console.nextInt();

          stockPortfolio [0]= new Stock(stockName, stockRatings, stockPrice, numberShares);
    }

这段代码不起作用。

stockPortfolio [0]= new Stock(stockName, stockRatings, stockPrice, numberShares)

有人可以告诉我将信息存储到数组中的正确方法吗?非常感谢你。

2 个答案:

答案 0 :(得分:2)

很多编译错误......

您已将stockRating定义为String,但仍将其作为int返回:

public int getStockRating() {
    return stockRating;
}

price也是如此。

这里有额外的括号:

public class StockInterface() {
                           ^

同样在StockInventory中,类块中有多个语句它们属于一个方法。

console未实例化。 stockPortfolio被指定为数组条目,但它是单个对象,并分配给Stock,而不是匹配类型。

答案 1 :(得分:1)

所以你已经将stockPortfolio声明为StockInventory的一个实例。 StockInventory是一个不是数组的类,所以你不能使用stockPortfolio [0] = ...因为stockPortfolio是该类的一个实例。 StockInventory中有一个私有成员,它是Stock类实例的数组。您需要的是一种能够操作它的访问器方法。所以改变StockInventory如下:

public class StockInvetory {
/*
  All the code you have now ...
*/
  public Stock [] getStocks(){
      return stocks;
  }

  public setStocks(Stock [] value){
     //maybe some checking here ...
      stocks = value;
  }
}

现在使用该课程只是略有改变。您需要使用以下访问器方法:

public class StockInterface {
 /*
 What you have just the following line changes ...
 */
   stockPortfolio.getStocks()[0] = new Stock(stockName, stockRatings, stockPrice, numberShares);
}

我假设您对初始化阵列的方式感到满意,并且您已确定阵列比针对特定项目的集合中的更多动态数据结构更好。如果不是这样,那么看看Java Collections,它们可能会带给你更多的快乐。