我必须从一组卡片中收集唯一的符号。但是在提供输入的同时,我无法获得唯一的结果

问题描述 投票:0回答:1
import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Set<Card> set = new TreeSet<>();
        List<Character> list = new ArrayList<>();
        int count = 0;
        boolean flag;

        do {
            Card c  = new Card();
            System.out.println("Enter a card: ");
            c.setSymbol(sc.nextLine().trim().charAt(0));
            c.setNumber(sc.nextInt());
            sc.nextLine();
            set.add(c);
            count++;
            list.add(c.symbol);
            if(list.contains('a') && list.contains('b') && list.contains('c') && list.contains('d')){
                flag =false;
            }else {
                flag = true;
            }

        }while(flag);


        System.out.println();
        System.out.println("Four symbols gathered in "+count+" Cards.");
        System.out.println("Cards in Set are: ");

        for(Card ca:set) {
            System.out.println(ca.getSymbol()+" "+ca.getNumber());
        }
        sc.close();
    }

}

输出应为:

Enter a card :
a 1
Enter a card :
a 2 
Enter a card :
d 6
Enter a card :
c 2
Enter a card :
d 1
Enter a card :
c 1
Enter a card :
b 2
Four symbols gathered in 8 cards.
Cards in Set are : 
a 1 
b 2 
c 2 
d 6
java collections set unique
1个回答
0
投票
import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Map<Character,Card> map = new TreeMap<>();
        List<Character> list = new ArrayList<>();
        int count = 0;
        boolean flag;

        do {
            Card c  = new Card();
            System.out.println("Enter a card: ");
            c.setSymbol(sc.nextLine().trim().charAt(0));
            c.setNumber(sc.nextInt());
            sc.nextLine();
    if(!map.containsKey(c.symbol))
                 map.put(c.symbol,c);
            count++;
            list.add(c.symbol);
            if(list.contains('a') && list.contains('b') && list.contains('c') && list.contains('d')){
                flag =false;
            }else {
                flag = true;
            }

        }while(flag);


        System.out.println();
        System.out.println("Four symbols gathered in "+count+" Cards.");
        System.out.println("Cards in Set are: ");

        for(char ch:map.keySet()) {
            System.out.println(ch+" "+map.get(ch).getNumber());
        }
        sc.close();
    }

}
© www.soinside.com 2019 - 2024. All rights reserved.