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);
あなたの現在の出力はどれですか? –
'list.get(i).equalsIgnoreCase(list.get(j))'は各ループ内で少なくとも1回は真である –
あなたのリストに 'A、B、C、D、E'と' j' 2(Cを指す)である。その後、 'remove(j)'を呼び出すと 'A、B、D、E'があり、ループを続けるので、' j ++ 'は' j'を3に設定します( 'E'を指します)。 ** OOPS!** *あなたは 'D'をスキップしました。* – Andreas