2016-11-11 3 views
0

私のコード私はバナナ、バナナ、ヨーグルトが入力された場合、入力されたアイテムの数量を表示する必要があります。合計は3、バナナx2、ヨーグルトx1です。 出力に苦しんでいます。私はこれを行う簡単な方法があることを知っていますw HashMapしかし、私はそれについて学んでいないので、私はそれを使用したくないです。 私はループ内にカウンターを置いていますが、米、RICE、RIce、たくさんのRICEを入力すれば、私の生産量は米x3、たくさんのRICE x1になりますが、代わりに米x2 RIce x2になりますか?あなたは一度だけ0にcountを設定しているので意味し、コード内の各項目の数量の結果に何が問題になっていますか?

... 
System.out.println("Total items: " + list.size()); 

for (int i = 0; i < list.size(); i++) { 
    int count = 0; // Initialize the count variable here 
    ... 

(理にかなって:

public static void main(String[] args) { 
    ArrayList<String> list = new ArrayList<String>(); 
    System.out.println("Enter want you want to purchase:"); 
    Scanner read= new Scanner(System.in); 
    String item = read.nextLine(); 

    while(!item.equals("stop")) { 
     list.add(item); 
     item = read.nextLine(); 
} 
System.out.println("Total items: " +list.size()); 

    for(int i=0; i<list.size(); i++) { 
    int count = 0; 
     System.out.print(list.get(i) + "x"); 
    for(int j=0; j<list.size(); j++){ 
     if(list.get(i).equalsIgnoreCase(list.get(j))) 
      count++; 
     if(list.get(i).equalsIgnoreCase(list.get(j)) && count>1) 
      list.remove(j); 
    }      
     System.out.println(count); 
+0

あなたの現在の出力はどれですか? –

+0

'list.get(i).equalsIgnoreCase(list.get(j))'は各ループ内で少なくとも1回は真である –

+1

あなたのリストに 'A、B、C、D、E'と' j' 2(Cを指す)である。その後、 'remove(j)'を呼び出すと 'A、B、D、E'があり、ループを続けるので、' j ++ 'は' j'を3に設定します( 'E'を指します)。 ** OOPS!** *あなたは 'D'をスキップしました。* – Andreas

答えて

1

は、あなたのカウンタ変数count新しい要素の出現箇所を数える時に0にリセットするのを忘れましたそれは増分を維持するだけです...)

関連する問題