Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.Map.Entry;
- import java.util.Scanner;
- import java.util.TreeMap;
- public class Scoreboard {
- public static void main(String[] args) {
- Scanner scan = new Scanner(System.in);
- HashMap<String, String> users = new HashMap<>();
- HashMap<String, String> games = new HashMap<>();
- HashMap<String, HashMap<String, ArrayList<Integer>>> scoreboard = new HashMap<>();
- String input = scan.nextLine();
- while (!input.equals("End")) {
- String[] line = input.split(" ");
- String command = line[0];
- switch (command) {
- case "RegisterUser":
- String username = line[1];
- String password = line[2];
- if (users.containsKey(username)) {
- System.out.println("Duplicated user");
- } else {
- users.put(username, password);
- System.out.println("User registered");
- }
- break;
- case "RegisterGame":
- String gamename = line[1];
- String gamePassword = line[2];
- if (games.containsKey(gamename)) {
- System.out.println("Duplicated game");
- } else {
- games.put(gamename, gamePassword);
- System.out.println("Game registered");
- }
- break;
- case "AddScore":
- String userForScore = line[1];
- String passForUserScore = line[2];
- String gameToScore = line[3];
- String passForGame = line[4];
- int score = Integer.parseInt(line[5]);
- if (users.containsKey(userForScore) && passForUserScore.equals(users.get(userForScore))
- && games.containsKey(gameToScore) && passForGame.equals(games.get(gameToScore))) {
- if (scoreboard.containsKey(gameToScore)) {
- if (scoreboard.get(gameToScore).containsKey(userForScore)) {
- scoreboard.get(gameToScore).get(userForScore).add(score);
- System.out.println("Score added");
- } else {
- ArrayList<Integer> tempList2 = new ArrayList<>();
- tempList2.add(score);
- scoreboard.get(gameToScore).put(userForScore, tempList2);
- System.out.println("Score added");
- }
- } else {
- HashMap<String, ArrayList<Integer>> tempMap = new HashMap<>();
- ArrayList<Integer> tempList = new ArrayList<>();
- tempList.add(score);
- tempMap.put(userForScore, tempList);
- scoreboard.put(gameToScore, tempMap);
- System.out.println("Score added");
- }
- } else {
- System.out.println("Cannot add score");
- }
- break;
- case "ShowScoreboard":
- String game = line[1];
- boolean haveTen = false;
- Map<Integer, ArrayList<String>> sortedByName = new TreeMap<>(Collections.reverseOrder());
- if(!games.containsKey(game)) {
- System.out.println("Game not found");
- break;
- } else if(!scoreboard.containsKey(game)) {
- System.out.println("No score");
- break;
- }
- for (Entry<String, ArrayList<Integer>> entry : scoreboard.get(game).entrySet()) {
- if (haveTen) {
- break;
- }
- entry.getValue().sort((a,b) -> b.compareTo(a));
- for (Integer i : entry.getValue()) {
- if (haveTen) {
- break;
- }
- if (sortedByName.containsKey(i)) {
- sortedByName.get(i).add(entry.getKey());
- } else {
- ArrayList<String> tempArrayList = new ArrayList<>();
- tempArrayList.add(entry.getKey());
- sortedByName.put(i, tempArrayList);
- }
- if (sortedByName.size() >= 10) {
- haveTen = true;
- }
- }
- }
- int count = 1;
- for (Entry<Integer, ArrayList<String>> entry : sortedByName.entrySet()) {
- entry.getValue().sort((a,b) -> a.compareTo(b));
- if (count > 10) {
- break;
- }
- for (String name : entry.getValue()) {
- if (count > 10) {
- break;
- }
- System.out.printf("#%d %s %d\n", count, name, entry.getKey());
- count++;
- }
- }
- break;
- case "DeleteGame":
- String gameToDelete = line[1];
- String passForGameToDel = line[2];
- if(games.containsKey(gameToDelete) && passForGameToDel.equals(games.get(gameToDelete))) {
- if(scoreboard.containsKey(gameToDelete)) {
- scoreboard.remove(gameToDelete);
- games.remove(gameToDelete);
- System.out.println("Game deleted");
- } else {
- games.remove(gameToDelete);
- System.out.println("Game deleted");
- }
- } else {
- System.out.println("Cannot delete game");
- }
- break;
- case "ListGamesByPrefix":
- String prefix = line[1];
- List<String> gamesByPrefix = new ArrayList<>();
- for(Entry<String, String> entry : games.entrySet()) {
- if(entry.getKey().startsWith(prefix)) {
- gamesByPrefix.add(entry.getKey());
- if(gamesByPrefix.size() >= 10) {
- break;
- }
- }
- }
- if(gamesByPrefix.size() == 0) {
- System.out.println("No matches");
- break;
- }
- gamesByPrefix.sort((a,b) -> a.compareTo(b));
- String output = gamesByPrefix.toString();
- output = output.replace("[", "");
- output = output.replace("]", "");
- System.out.println(output);
- default:
- break;
- }
- input = scan.nextLine();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement