2

ここに私の質問があります。定義済みのクラスを使用して配列を作成しています。クラスは次のようになります。

 class InventoryItem {

    String ItemName;
    int ItemNumber;
    int InStock;
    double UnitPrice;
    double InventoryValue;

    public InventoryItem(String ItemName, int ItemNumber, int InStock, double UnitPrice) {
        this.ItemName = ItemName;
        this.ItemNumber = ItemNumber;
        this.InStock = InStock;
        this.UnitPrice = UnitPrice;
        this.InventoryValue = UnitPrice * InStock;

    }

    public void output() {
        System.out.println("Item Name = " + ItemName);
        System.out.println("Item Number = " + ItemNumber);
        System.out.println("In Stock = " + InStock);
        System.out.println("Item Price = $" + UnitPrice);
        System.out.println("Item value of stocked items = $" + InventoryValue);

    }
}

テスト例をロードすると、これはうまく機能します。

ただし、このクラスを使用して配列を構築しようとすると、何かが壊れます。

import java.util.*;

public class Inventory {

    public static void main(String[] args) {
        Scanner user_input = new Scanner(System.in);
        System.out.println("Welcome to the inventory program\n")
        System.out.println("This will help keep track of your inventory of office supplies");

        InventoryItem[] Stock;
        InventoryItem[10] = Stock;
        Stock[1] = new InventoryItem("Test", 123456, 500, .99);
        System.out.println("Please enter the Item Nmae");
        ItemName = user_input.nextline();

私が抱えている問題は、それが気に入らないというInventoryItem[] Stock;ことInventoryItemです。このクラスは基本的に配列として使えると思いました。私は正しい質問をしていると思いますが、これは初めてなので、ご容赦ください。ところで、このテスト例は機能しません。ただし、これは最初のテスト例です。

 public static void main(String[] args) {
   InventoryItem Stock = new InventoryItem("TEST", 123456789, 999, 1.25);
    Stock.output();

その1行をロードするのに問題なく動作しますが、ユーザーが配列の各セクションをロードしてロードできるように取り組んでいます。それは理にかなっていますか、それとも私はばかのように聞こえますか? 私は用語が得意ではありませんが、それに取り組んでいます。どんな助けでも大歓迎です。

4

3 に答える 3

2
InventoryItem[] Stock;
InventoryItem[10] = Stock;

する必要があります

InventoryItem[] Stock = new InventoryItem[10];

また、私はあなたがこれをやっているのを見ます (おそらく問題にはなりませんが、あなたが知らない場合の参考までに.

 Stock[1] = new InventoryItem("Test", 123456, 500, .99);

配列のインデックスは 0 から始まります。つまり、0 から始まります。したがって、上記のコードで最初のインデックスにアクセスしようとすると、実際には 2 番目のインデックスにアクセスすることになります。

于 2013-11-10T15:05:03.970 に答える
1

newInventoryItem の Stock 配列にスペースを割り当てるために使用します

InventoryItem[] Stock = new InventoryItem[10];

また、配列インデックス 1 を使用して Stock に何かを追加していることに気付きました。

Stock[1] = new InventoryItem("Test", 123456, 500, .99);

これは問題ありませんが、最初の位置にしたい場合は、Java 配列がゼロベースであることを知っておいてください。

詳細については、Java 配列に関する Oracle のチュートリアルを参照してください。

于 2013-11-10T15:05:20.550 に答える
1

ブラケットの代わりにこれを使用します。

ArrayList<InventoryItem> Stock = new ArrayList<InventoryItem>();

アイテムの追加:

Stock.add(new InventoryItem(/*parameters*/);

ここで使用できる残りのメソッドを見つけることができます

于 2013-11-10T15:06:24.037 に答える