0

ユーザーがスーパーマーケットのカタログを作成し、ユーザーが入力したコードに従って昇順でカタログに入力したすべての製品を表示できる Java アプリケーションを作成しようとしています。 「ソート」と呼ばれるメソッドを使用できることがわかりましたが、問題を実装しようとしましたが、うまくいかず、コードのどこに配置すればよいかわかりません。

私が書いたコード: 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 {
    public static void main(String[] args) throws IOException {
        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());
                        System.out.println();
                    }
                }
                break;
            }
        }
    }
}

助けてください??

4

2 に答える 2

1

独自のコンパレータを作成してから、Arrays.sortメソッドを呼び出すことができます。

public static class MyComparator implements Comparator<Catalog> {
    @Override
    public int compare( Catalog first, Catalog second ) {
        return first.getCode().compareTo( second.getCode() );
    }        
}

Arrays.sort( productsArray, new MyComparator() );
于 2013-02-05T21:17:23.827 に答える
0

最初にいくつかのこと:

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

クラスCatalogは実際にはカタログ内の単一の製品ですが、Catalog[]インスタンス化する配列はカタログ自体です。

あなたが取ることができる多くのオプションがあります。可能であれば、配列の代わりにリストを使用することをお勧めします。(今後)クラスにインターフェースを実装さCollections#sortせることができます。そこで、メソッドをオーバーライドし、コードに基づいて比較を行います。CatalogProductComparablecompareTo

他の代替手段は、ソートのベースとして使用されるaTreeSetとを定義することです。Comparator最初のオプションで問題ないと思います。

一方、配列makkeに固執する必要がある場合は、Comparator(のようにTreeSet)とArrays#sortメソッドを使用します。

于 2013-02-05T21:17:36.397 に答える