OOP的Java:创建现货库存计划(OOP Java: Creating a stock inven

2019-07-29 16:42发布

我是相当新的面向对象编程,所以我还是有一些麻烦,掌握一些基本概念。 所以在这里我想创建一个基本的库存计划,以保持跟踪的股票。 每个股票包含几个细节:公司名称,股票评级(AAA,AAA,AAA,类似的东西),购买价格和股份数量。 程序会要求用户输入过的命令行提示符下运行这些细节。 用户只能在最多12只个股的输入。 如果用户输入一个股票的两倍,它会打印出一个错误。 而如果用户输入一个股票的两倍,它也将打印出一个错误信息。

以下是我迄今所做的:股票对象

 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];

}

private static void StockInventory() {
       for (int i = 0; i<INVENTORY_SIZE; i++){
         Scanner console = new Scanner(System.in);

    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();

          stocks [i]= new Stock(stockName, stockRatings, stockPrice, numberShares);
    }

public static void main (String [] args){
    StockInventory();



}

}

所以我的问题有以下几种:

第一只股票对象程序应该没问题,我的问题是现货库存计划。 有了这个代码,民营股份[]股,这是否意味着现货库存计划将存储信息到一个数组? 如果是这样,我怎么存储与特定股票,公司名称,价格,ETCS一起相关的所有细节。 我要在所有的细节跟踪为了创建一个多维数组? 就像一列包含所有细节大约一个股票,而第二行包含其他股票的详细信息。 并确定用户是否已经进入一只股票两次,我用“equalsIgnoreCase”做比较呢? 我知道我可能需要创建的现货库存的另一种方法。

非常感谢你提前为您的帮助。

Answer 1:

一旦你的名字,等级,价格和股数看,你需要调用构造函数类股票,以创建类的实例,它在你的股票[]数组分配到下一个项目。

像这样:

stocks[0] = new Stock( stockName, stockRating, stockPrice, numberShares);

然后,你需要把创建新的股票对象为一个循环,这样就可以在所有12只个股看,你正在使用从控制台读取的代码行,再加上我的路线:

for( int i = 0; i < INVENTORY_SIZE; i++ )
{
    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();

    stocks[i] = new Stock( stockName, stockRating, stockPrice, numberShares);
}

现在,这是不完美的,因为它会要求用户随时进入全套12只个股,所以你需要弄清楚如何让用户放弃跳出循环只要做了,你”会还是要补充一点,错误检查你想,以确保没有重复的输入,但它应该初始化单个对象和分配eachh一个数组元素。



Answer 2:

民营股份制[]股,这是否意味着现货库存计划将存储信息到一个数组? 如果是这样,我怎么存储与特定股票,公司名称,价格,ETCS一起相关的所有细节。

你的阵列就像一个list的股票。 但是,仅仅因为它的一个目的,并不意味着它仅包含一个数据。 它可以容纳字符串,整数和其它用户定义的数据类型。 因此,您可以存储与股票里面的数据片段Stock对象。

public class Stock {

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

这些都存储在每个股票对象,可以由您定义的getter方法进行访问。

int stockdata = stocks[4].getPrice();

然而,到初始化Stock阵列,您要创建一个新的Stock的对象为各地区,像这样:

for(int i = 0; i < INVENTORY_SIZE; i++) {
    stocks[i] = new Stock(foo, bar, lorem, ipsum);
}

这里使用的变量只是占位符,这样你就可以从控制台读取像你上面做的创建参数。

对于OOP这些设计原则会帮助你理解数据容器之间的关系。

对于你的问题的第二部分,你可以看看只是比较数据值中的一个,喜欢companyName ,或实现接口一样媲美 。

for(Stock s : stocks) {
    if(stockName.equals(s.getCompanyName()) {
       // ERROR!
    }
}


Answer 3:

您可能要提供一些方法来打破在一定条件下的循环,如果用户不希望输入的所有12个信息。 然而,这是完全对您的要求。 在这种情况下,您可能需要使用其他选项,如列表或载体。

每个对象都可以在这必将对每个对象的情况下,等级,价格,名称和共享多个变量,等等。 所以,当你存储对象中排列的指标,实际上是存储所有这些在一个位置由该对象所包含的信息。 因此,在这种情况下,您不必创建多维数组。

您可以根据什么定义对象作为平等的,并用它来确定是否同一股票再次提供覆盖你的equals方法。 如果两个对象相同这将返回true,否则为false。

您可以将您的更新代码,并记录在这里,这样你可以得到关于你的异常的建议



Answer 4:

在真实的场景中的一些问题浮现在脑海中:

  • 因为价格通常是在特定的货币的量价不应该是一个整数。 检查这个钱有关的问题 。
  • 股票评级将使用枚举更好地表示。 见DOC


文章来源: OOP Java: Creating a stock inventory program