0

ユーザーがスーパーマーケットのカタログを作成し、ユーザーがカタログに入力したすべての製品を表示できる Java アプリケーションを作成しようとしています。今、ユーザーの入力によって埋められるべきオブジェクトの配列を埋めることに問題があります。出力は次のようになります (太字のユーザー入力)。

製品の説明を入力してください (または停止するには #):濃縮粉末水 製品コードを入力してください: P3487 製品単価を入力してください: $2.50 製品単位フレーズを入力してください: 1 パケットあたり

製品の説明を入力してください (または停止するには #): Distilled Moonbeams 製品コードを入力してください: K3876 製品の単価を入力してください: $3.00 製品の単位フレーズを入力してください: ダース

製品の説明を入力してください (または停止するには #): Anti-Gravity Pills 製品コードを入力してください: Z9983 製品の単価を入力してください: $12.75 製品の単位フレーズを入力してください: for 60

製品の説明を入力してください (または # で停止します): #

あなたのカタログ: P3487、濃縮粉末水、1 パケットあたり 2.50 ドル。K3876、蒸留ムーンビーム、ダース 3.00 ドル。Z9983、アンチグラビティ ピル、60 個で 12.75 ドル。

私が書いたコード: 2 クラス クラス 1:

public class Catalog {

private String description ; 
private String code ;
private double price ;
private String phrase ;

int counter = 0;

private Catalog [] list = new Catalog [100];

public Catalog (String productDescription , String productCode , double    productPrice , String productPhrase)
{
    description = productDescription;
    code = productCode;
    price = productPrice;
    phrase = productPhrase;
}

public void setDescription (String productDescription)
{
    description = productDescription;
}

public String getDescription ()
{
    return description;
}

public void setCode (String productCode)
{
    code = productCode;
}

public String getCode ()
{
    return code;
}

public void setPrice (double productPrice)
{
    price = productPrice;
}

public double getPrice ()
{
    return price;
}

public void setPhrase (String productPhrase)
{
    phrase = productPhrase;
}

public String getPhrase ()
{
    return phrase;
}

クラス 2:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class CatalogTest {

/**
 * @param args
 * @throws IOException 
 */

public static void main(String[] args) throws IOException {
    // TODO Auto-generated method stub

    String name = null; 
    String code = null;
    double price = 0.0;
    String phrase = null;



    BufferedReader input = new BufferedReader (new InputStreamReader  (System.in));

    Catalog product = new Catalog(name,code,price,phrase);

    Catalog [] productsArray = new Catalog [100];


    for (int i = 0 ; i < productsArray.length ; i ++)
    {


        System.out.println("Enter product description (or # to stop): ");
        name = input.readLine();

        if (!("#".equals(name))) 
        {

            productsArray [i] = product;
            product.setDescription(name);

            System.out.println("Enter product code: ");
            code = input.readLine();
            productsArray [i] = product;
            product.setCode(code);


            System.out.println("Enter product unit price: ");
            price = Double.parseDouble(input.readLine());
            productsArray [i] = product;
            product.setPrice(price);


            System.out.println("Enter product unit phrase: ");
            phrase = input.readLine();
            productsArray [i] = product;
            product.setPhrase(phrase);



            productsArray [i] = new Catalog (name,code,price,phrase);



        }

        else 
        {
            System.out.println("Your Catalog:");

            System.out.printf("%s, %s,$%.2f   %s",product.getCode(),product.getDescription(),product.getPrice(),product
                    .getPhrase());
            break;
        }


    }


}
}

私が得た出力 (太字のユーザー入力) : 製品の説明を入力してください (または停止する #): 濃縮粉末水 製品コードを入力してください: p3487 製品単価を入力してください: 2.50 製品単位のフレーズを入力してください: パケットあたり 製品の説明を入力してください (または停止する #) ): 蒸留ムーンビーム 製品コードを入力してください: k3876 製品単価を入力してください: 3 製品単位フレーズを入力してください: 1 ダース 製品の説明を入力してください (または # で停止します): # カタログ: k3876,

助けてください??

4

2 に答える 2

0

これが機能する更新されたコードです...

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class CatalogTest
{

    /**
     * @param args
     * @throws IOException
     */

    public static void main(String[] args) throws IOException
    {
        // TODO Auto-generated method stub

        String name = null;
        String code = null;
        double price = 0.0;
        String phrase = null;

        BufferedReader input = new BufferedReader(new InputStreamReader(
            System.in));

        Catalog product = new Catalog(name, code, price, phrase);

        Catalog[] productsArray = new Catalog[100];

        for (int i = 0; i < productsArray.length; i++)
        {

            System.out.println("Enter product description (or # to stop): ");
            name = input.readLine();

            if (!("#".equals(name)))
            {

                productsArray[i] = product;
                product.setDescription(name);

                System.out.println("Enter product code: ");
                code = input.readLine();
                productsArray[i] = product;
                product.setCode(code);

                System.out.println("Enter product unit price: ");
                price = Double.parseDouble(input.readLine());
                productsArray[i] = product;
                product.setPrice(price);

                System.out.println("Enter product unit phrase: ");
                phrase = input.readLine();
                productsArray[i] = product;
                product.setPhrase(phrase);

                productsArray[i] = new Catalog(name, code, price, phrase);

            }

            else
            {
                System.out.println("Your Catalog:");
                for (int j = 0; j < productsArray.length; j++)
                {
                    if(productsArray[j]!=null)
                    {
                        System.out.printf("%s, %s,$%.2f %s,",
                            productsArray[j].getCode(),
                            productsArray[j].getDescription(),
                            productsArray[j].getPrice(),
                            productsArray[j].getPhrase());
                    }
                }
                break;
            }

        }

    }
}
于 2013-02-04T21:20:23.453 に答える
0

与えられた正しい答えについて詳しく説明するつもりはありませんが、将来的にはArrayListsまたはVectorsを調べることが有益になるかもしれません。どちらも拡張可能なデータ ストアであるため、格納する必要がある項目の量がわからない場合に使用するのに適したデータ構造です。つまり、初期化時にサイズを定義する必要はありません。

たとえば、最初の試みproductsArrayでは、サイズが 100 になるように定義しました。ユーザーが 101 個のアイテムを入力したい場合はどうなるでしょうか。ベクターを使用すると、その場で拡大または縮小できるため、これに対抗できます。

私はソフトウェア開発を学ぶ 3 年生ですが、Vectors over Arrays を使い始めたとき、Vectors が提供する柔軟性のおかげで、プログラミングの問題を簡単に回避できるようになりました :)

于 2013-02-04T21:48:06.187 に答える