0

特定のモデル、たとえば「エスカレード」の結果を表示するには、キャデラックオブジェクト配列を検索する必要がありますが、結果をコンソール画面に出力するためにコードを具体的に配置する必要がある場所を特定するのに問題があります。今持っているものを印刷しようとすると、ループに陥り続けます。プログラムに関する他のすべてが機能しているので、コンソール画面に複数の結果を表示できるようにする必要があります。

これが私が持っているコードです:

    while( response != null )
    {
      if( response.length() > 0 )
      {
        count = 0;
        found = false;
        while( count < data.length && data[count] != null && !found )
        {
          item = data[count].getModel();
          if( item.equalsIgnoreCase( response ) )
          {

            found = true;
          }
          else{
            count++;
          }
          message = "Model:  " + data[count].getModel() + "\n" +
                    "Stock Number:  " + data[count].getStockNum() + "\n" +
                    "Color            :  " + data[count].getColor() + "\n" +
                    "Price  :  " + data[count].getPrice();
          System.out.print( message );
        }

        if( !found )
          message = "Model not found in array.";
    }
    }
    response = JOptionPane.showInputDialog( prompt );
  }

また、検索の2番目の部分は、ユーザーの入力から3000ドル以内の車の検索結果を表示することです。これらの2つのタイプの検索は比較的類似しているため、これについてもガイダンスをいただければ幸いです。

4

2 に答える 2

1

すべてのコードを示したわけではありませんが、無限ループに陥っている場合は、ループ条件を確認してください。responseが null でないかどうかを確認しているようですがresponse、ループ内で割り当てられることはないため、ループに入ると行き詰まります。

また、countループでチェックしているので、おそらく毎回インクリメントする必要があります。見つかった場合、ループが壊れないようにインクリメントしません。

このコード ブロックを最初から書き直すことをお勧めします。条件を単純化して、自分自身 (および採点者) が理解しやすいようにすることができると思います。

始めましょう。

do {
    response = JOptionPane.showInputDialog( prompt );
    for (int i=0; i < data.length; i++) {
        // do stuff with data[i] here
    }
} while(response != null);

ユーザー入力をチェックするには do-while ループが理にかなっていると思います。for ループは、要素をループする場合に意味があります。ここからユーザー入力を確認できます。equalsIgnoreCase() が文字列比較を処理するため、長さを数える必要はありません。

于 2012-04-17T03:59:57.610 に答える
0

モデルが一致または見つかった場合、内側のループは決して乗り越えられません。したがって、この場合、ループは無限になります。内側のループでカウントをインクリメントする必要があります。したがって、このインクリメントは独立して発生する必要があり、内側のループを安全に終了できます。 .しかし、ここで簡単にできるもう 1 つのことは、モデルが見つかったら内側のループを中断し、この後にその情報を表示することです。

while( count < data.length && data[count] != null && !found )
        {
          item = data[count].getModel();
          if( item.equalsIgnoreCase( response ) )
          {

            found = true;
            break;
          }
          else{
            count++;
          }
          message = "Model:  " + data[count].getModel() + "\n" +
                    "Stock Number:  " + data[count].getStockNum() + "\n" +
                    "Color            :  " + data[count].getColor() + "\n" +
                    "Price  :  " + data[count].getPrice();
          System.out.print( message );
        }

これがあなたを助けることを願っています。

于 2012-04-17T04:06:47.560 に答える