输入名称和角色,并使用名称获取该角色的输出

时间:2017-10-22 16:33:07

标签: java

我需要在学校这样做。它应该是一个JAVA项目。

例如,如果我们提供输入:

thomas teacher
charlie student
abe janitor
jenny teacher

输出将是:

teachers,thomas,jenny
students,charlie,
janitor,abe.

我只是个初学者,所以到目前为止我有这个代码:

   `Scanner in = new Scanner(System.in);
    String line = in.nextLine();

    String[] words = line.split(" ");
    //TreeMap treemap = new TreeMap();
    ArrayList<String> admin = new ArrayList<String>();
    Scanner input = new Scanner(System.in);
    while(true){
        Boolean s = input.nextLine().equals("Done");
        //treemap.put(line, "admin");
        if(words[1].contentEquals("admin")){
            admin.add(words[0]);
        }
        else if(s == true){
            break;
        }
    }
    System.out.println("admins," + "," + admin);`

我最初使用的是树形图,但我不知道如何使其工作,因此我想到使用ArrayList并删除末尾的括号。

编辑:

所以我现在有了代码:

    HashMap<String, String> teacher = new HashMap<String, String>();
    HashMap<String, String> student = new HashMap<String, String>();
    HashMap<String, String> janitor = new HashMap<String, String>();
    System.out.println("Enter a name followed by a role.");
    Scanner in = new Scanner(System.in);
    String line = in.nextLine();
    Scanner name = new Scanner(System.in);
    String r = name.nextLine();
    while(true){
        if(line.equals(r + " " + "teacher")){
            teacher.put(r, "teacher");
        }
    }

2 个答案:

答案 0 :(得分:0)

我会给你提示,因为你应该自己动手。

使用TYPE_SYSTEM_OVERLAY并插入您的输入,如下所示:

HashMap<String, List<String>> map

通过这种方式,您将获得与每种类型(if(map.containsKey(words[1])) { List<String> list = map.get(words[1]); list.add(words[0]); map.put(words[1],list); } else { map.put(words[1],Arrays.asList(words[0])) } )等对应的names列表。

之后迭代student/teacher并打印map

答案 1 :(得分:0)

我认为对于少量职业来说,仅使用数组列表来实现这一点是合理的。我认为您遇到问题的部分是输入结构,因此我将帮助您了解如何执行该部分并让您自己处理过滤:

private List<String> teachers = new ArrayList<>();
private List<String> students = new ArrayList<>();
private List<String> janitors = new ArrayList<>();

public void seperatePeople(){
    Scanner in = new Scanner(System.in);
    while(true){
        //Keep getting the next line in an infinite loop
        String line = in.nextLine();
        if(line.equals("Done")){
            break; //end the loop
        }else{
            //Split on the spaces
            String[] personArray = line.split(" ");
            //Remember each line is structured like : name, occupation
            //So when we split the line the array list we get from it
            //will be in the same order
            putInArray(personArray[0], personArray[1]);
        }
    }

    //Do whatever printing you have to do down here

}

private void putInArray(String name, String occupation) {
    //filter and add to the correct list in here
}

如果你想使用hashmap实现它,输入方法将是相同的,但是你不是将名字放入3个预先制作的职业arraylists中,而是创建arraylists并将它们放在一个hashmap中:

private HashMap<String, List<String>> peopleHashMap = new HashMap<>();

public void seperatePeople(){
    Scanner in = new Scanner(System.in);
    while(true){
        //Keep getting the next line in an infinite loop
        String line = in.nextLine();
        if(line.equals("Done")){
            break; //end the loop
        }else{
            //Split on the spaces
            String[] personArray = line.split(" ");
            //Remember each line is structured like : name, occupation
            //So when we split the line the array list we get from it
            //will be in the same order
            putInArray(personArray[0], personArray[1]);
        }
    }

    //You can get all the keys that you created like this
    List<String> keys = new ArrayList<>(peopleHashMap.keySet());

}

private void putInArray(String name, String occupation) {
    if(peopleHashMap.containsKey(occupation)){
        //If the key (occupation in this case) is already in the hashmap, that means that we previously
        //made a list for that occupation, so we can just the name to that list

        //We pull out a reference to the list 
        List<String> listOfNames = peopleHashMap.get(occupation);
        //And then put the new name into that list
        listOfNames.add(name);
    }else{
        //If the key isn't in the hashmap, then we need to make a new
        //list for this occupation we haven't seen yet
        List<String> listOfNames = new ArrayList<>();
        //We then put the name into the new list we made
        listOfNames.add(name);
        //And then we put that new list with the into the hashmap with the occupation as the key
        peopleHashMap.put(occupation, listOfNames);
    }
}