1

私は以前にこの質問をし、可能な限りフィードバックに従いましたが、ユーザーが配列に入力した情報の保存に関してまだ1つの問題があります。

最初の試みは次のとおりです 。OOPJava:在庫在庫プログラムの作成

したがって、合計3つのクラスが必要です(これは必須です)。在庫、在庫在庫、そしてユーザーインターフェース。このプログラムの目的は、会社名、株価、価格、株式数をユーザーに入力してもらうことです。もちろん、それから私は他のことをしなければなりません。残りは大丈夫だと思います。問題は、以下に投稿するコードの最後のビットである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)

誰かが情報を配列に保存する適切な方法を教えてもらえますか?どうもありがとうございます。

4

2 に答える 2

2

たくさんのコンパイルエラー...

あなたはとして定義stockRatingしましたStringが、それでもそれをint:として返します

public int getStockRating() {
    return stockRating;
}

同じことが。にも当てはまりますprice

ここに余分な括弧があります:

public class StockInterface() {
                           ^

また、StockInventoryでは、クラスブロックに複数のステートメントがあります。それらはメソッドに属します。

consoleインスタンス化されません。stockPortfolioは配列エントリとして割り当てられていますが、単一のオブジェクトでありStock、一致するタイプではないに割り当てられています。

于 2012-08-28T23:01:59.180 に答える
1

つまり、stockPortfolioをStockInventoryのインスタンスとして宣言しました。StockInventoryは配列ではなくクラスであるため、stockPortfolio [0] = ...を使用することはできません。これは、stockPortfolioがクラスのインスタンスであるためです。Stockクラスインスタンスの配列であるStockInventoryにプライベートメンバーがあります。必要なのは、それを操作できるようにするためのアクセサーメソッドです。したがって、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コレクションを見てください。Javaコレクションはあなたにもっと喜びをもたらすかもしれません。

于 2012-08-28T23:03:55.627 に答える