2

申し訳ありませんが、これは重複している可能性があります。これを投稿する以前の試みが成功したかどうかはわかりません.

数週間前に Java の学習を開始し、最初の課題の 1 つに取り組みました。:)

私の質問はやや基本的なものですが、以前に解決されたトピックを調べた後、正確に同等のものを見つけることができませんでした. これは現実の問題ではないので、非常に具体的な方法で取り組むことが期待されていると思います。

そのため、タスクはいくつかのステップで構成されていました。多数のカスタム オブジェクトを含むスーパークラスを作成し、新しいサブクラスを追加し、特定の変数の値をカウントする新しいメソッドを実装し、テスト クラスを記述し、出力を並べ替える必要がありました。

この最後のステップを除いて、すべて完了しています。そのような問題をウェブに投稿することが許されているかどうかはわかりませんが、今私がいる場所は次のとおりです。

私は次のようなものを持っています:

public class Pants
{
public enum SizeType {SMALL, MEDIUM, LARGE, EXTRA_LARGE}
private SizeType size; 
private String brand;
private String countryOfOrigin;
private String color;
private double price;

//Other variables and methods

}

public class Jeans extends Pants  
{ 
//new variables and methods 
}


public class Shorts extends Pants 
{
//some more new variables and methods
}

および他の同様のサブクラス。

import java.util.ArrayList;
public class Selection
{
public static void main(String[] args){

    Jeans ex1 = new Jeans("John Lewis");
    ex1.countryOfOrigin("US");
    ex1.color("Navy");
    ex1.setSize(Pants.SizeType.LARGE);
    ex1.setprice(40);
    ex1.machineWashable(true);
    System.out.println(ex1);

    Shorts ex2 = new Shorts("Ted Baker");
    ex2.countryOfOrigin("United Kingdom");
    ex2.color("White");
    ex2.setSize(Pants.SizeType.MEDIUM);
    ex2.setprice(30);
    ex2.machineWashable(true);
    System.out.println(ex2);
//..etc

ArrayList<Pants> selection = new ArrayList<Pants>();
    selection.add(ex1);
    selection.add(ex2);
    selection.add(ex3);
    selection.add(ex4);
    selection.add(ex5);

    System.out.println( "Size - LARGE: " );
    System.out.println();
    Pants.SizeType size;
    size = Pants.SizeType.LARGE;
    ListPants(selection,size);

SizeType に応じてオブジェクトを一覧表示する ListPants メソッドを作成する必要があります。この場合は大から始めます。追加のインターフェイスを実装できるとは思いません (これは、他のスレッドで主に推奨されていたものです)。

以下の私の試みを見てください(うまくいきませんでした)。ここで正しい方向に考えていますか、それとも?

public static void ListPants(ArrayList<Pants> selection, Pants.SizeType size)
{
for (Pants.SizeType sizeType : Pants.SizeType.values()) {
    for (Pants pants : selection) {
        if (pants.getSize().equals(sizeType)) {
System.out.println(selection.toString());    
4

2 に答える 2

1

あなたが直面している小さな問題だと思います。特定のサイズのすべてのパンツを出力するメソッドのシグネチャは既に定義されています。

ListPants(ArrayList<Pants> selection, Pants.SizeType size)

それは正しいです。これで、コードはすべてのズボンと可能なすべてのサイズをループします。

public static void ListPants(ArrayList<Pants> selection, Pants.SizeType size)
{
for (Pants.SizeType sizeType : Pants.SizeType.values()) {
    for (Pants pants : selection) {
        if (pants.getSize().equals(sizeType)) {
           System.out.println(selection.toString()); 

これは宿題のように見えるので、私の答えを質問として表現します。

sizeのメソッド本体のどこでパラメータを使用していますListPantsか?

于 2012-12-08T23:56:30.210 に答える
0

あなたのクラスは新しいインターフェースを実装できず、インターフェースをまったく使用していないと仮定しています。

クラス用に構築されCollections.sort(List,Comparator)たで使用できます。Comparator

何かのようなもの

Collections.sort(selection,new Comparator<Pants>() { 

   @Override
   public int compare(Pants p1, Pants p2) { 
       //implement your compare method in here
       ...
   }
});

独自のソート アルゴリズムを作成したい場合は、このソート アルゴリズムのリストを参照してください。実装が最も簡単です(かなり遅いですが)IMOは選択ソートです

于 2012-12-08T23:46:54.957 に答える