1

私はこれのほとんどの部分を行いました。リスト内の10の数を見つける方法について、誰かが私に小さなヒントを教えてくれます。例えば。入力は

[10,4,6,10,6,7]

出力は

[4,6,6,7,0,0]

import java.util.ArrayList;
import java.util.List;

public class prob64 {
   public static List output;
   public static void getVal(List ll)
   {
       int count=0;
       List ll1=new ArrayList();
       for(int i=0;i<ll.size();i++)
       {
           if((int)ll.get(i)!=10)
           {
               ll1.add(ll.get(i));
           }
           if((int)ll.get(i)==10)
           {
               count++;
           }
       }
       if(count>0)
       {
          ll1.add(8);
       }   
       output=ll1;
       System.out.println(output);
   }

   public static void main(String[] args) {
        List<Integer> ll=new ArrayList();
        ll.add(10);
        ll.add(1);
        ll.add(10);
        ll.add(2);
        prob64.getVal(ll);
   }
}

私が得ている現在の出力はです[1,2,0]。私は得ることになっています[1,2,0,0]

4

4 に答える 4

3

List.remove(Object)最初に一致する要素を削除します。また、削除が実際に行われたかどうかを示すブール値を返すため、これは機能するはずです。

while(ll.remove(10)) {
  ll.add(0);
}

つまり、削除する10が見つかった場合は、0を追加します。リストの最後に要素を追加することに注意してList.addください。これは要件です(私が正しければ)。

これはある種の学習演習だと思いますが、変数のより適切な名前を見つけることをお勧めします(llll1は関数を読みやすくしません)。

于 2013-03-03T13:15:02.993 に答える
2

ループの最後にゼロを 1 つだけ追加しています ( 10が見つかった場合)。10の数を数えてから、この数だけゼロを追加する必要があります。プログラムは次のようになります。

int count=0;
List ll1=new ArrayList();
for(int i=0;i<ll.size();i++)
{
    if((int)ll.get(i)!=10)
       ll1.add(ll.get(i));
    else
       count++;
}

for(int j=0; j<count;j++)
    ll1.add(0);
于 2013-03-03T13:17:54.813 に答える
1

countが追加する 10 の数である場合は、次を使用します。

for(int j=0; j<count;j++){
    ll1.add(8); // or ll1.add(0); ???
}
于 2013-03-03T13:10:25.177 に答える
0

他の人が上で述べたことに追加するいくつかのポイント

  1. 出力 List をstaticに定義する必要がある理由はわかりません。何か(変数/関数)を静的として定義すると、それらはオブジェクトではなくクラスによって所有されます。また、インスタンス関数を使用してそれらを変更しないことも良いプログラミング方法です。その出力インスタンス変数が必要です。ll1 を直接印刷できます。
  2. コードで Generics を使用してください。リストにあるのが整数だけであることがわかっている場合は、それを指定します-関数getVal () でも。コードがどのようにコンパイルされているかわかりませんが、Object を int にキャストすることはできません

    (int)ll.get(i)!=10
    

    このコードは失敗します。int の代わりにIntegerを使用してみてください。

  3. あなたの問題文は、すべての 10 を 0 に置き換えています。では、代わりに 8 を追加するのはなぜですか。

    ll1.add(0);
    

    他の人が指定しているように、カウントと同じ回数 0 を追加する必要があります。したがって、別のループが必要です。残りはすべて見栄えがします。

于 2013-05-18T12:25:44.480 に答える