kalinikov

02. Excel Functions

Feb 19th, 2020
673
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.36 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4.  
  5. public class ExcelFunctions {
  6. public static void main(String[] args) throws IOException {
  7. BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  8.  
  9. int rowCount = Integer.parseInt(reader.readLine());
  10. String[][] matrix = new String[rowCount][];
  11.  
  12. for (int i = 0; i < rowCount; i++) {
  13. matrix[i] = reader.readLine().split(", ");
  14. }
  15.  
  16. String[] commandArgs = reader.readLine().split(" ");
  17.  
  18. switch (commandArgs[0]) {
  19. case "hide":
  20. hideColumnAndPrint(matrix, commandArgs[1]);
  21. break;
  22. case "sort":
  23. sortByColumnAndPrint(matrix, commandArgs[1]);
  24. break;
  25. case "filter":
  26. filterByColumnAndPrint(matrix, commandArgs[1], commandArgs[2]);
  27. break;
  28.  
  29. }
  30. }
  31.  
  32. private static void filterByColumnAndPrint(String[][] matrix, String filterColumn, String filterValue) {
  33. int filterColumnIndex = getColumnIndexByName(matrix[0], filterColumn);
  34.  
  35. System.out.println(String.join(" | ", matrix[0]));
  36. for (int i = 1; i < matrix.length; i++) {
  37. if (matrix[i][filterColumnIndex].equals(filterValue)) {
  38. System.out.println(String.join(" | ", matrix[i]));
  39. }
  40. }
  41. }
  42.  
  43. private static void sortByColumnAndPrint(String[][] matrix, String sortColumnName) {
  44. int sortColumnIndex = getColumnIndexByName(matrix[0], sortColumnName);
  45.  
  46. for (int j = 0; j < matrix.length; j++) {
  47. for (int i = 1; i < matrix.length - 1 - j; i++) {
  48. if (matrix[i][sortColumnIndex].compareTo(matrix[i + 1][sortColumnIndex]) > 0) {
  49. String[] temp = matrix[i];
  50. matrix[i] = matrix[i + 1];
  51. matrix[i + 1] = temp;
  52. }
  53. }
  54. }
  55. for (int i = 0; i < matrix.length; i++) {
  56. for (int j = 0; j < matrix[i].length; j++) {
  57. System.out.print(matrix[i][j]);
  58. if (j != matrix[i].length - 1) {
  59. System.out.print(" | ");
  60. }
  61. }
  62. System.out.println();
  63. }
  64.  
  65. }
  66.  
  67. private static void hideColumnAndPrint(String[][] matrix, String hiddenColumn) {
  68. int hiddenColumnIndex = getColumnIndexByName(matrix[0], hiddenColumn);
  69.  
  70. for (int i = 0; i < matrix.length; i++) {
  71. for (int j = 0; j < matrix[i].length; j++) {
  72. if (j == hiddenColumnIndex) {
  73. continue;
  74. }
  75. System.out.print(matrix[i][j]);
  76. if (j != matrix[i].length - 1) {
  77. if (!(j == matrix[i].length - 2 && hiddenColumnIndex == j + 1))
  78. System.out.print(" | ");
  79. }
  80. }
  81. System.out.println();
  82. }
  83.  
  84. }
  85.  
  86. private static int getColumnIndexByName(String[] matrix, String hiddenColumn) {
  87. int hiddenColumnIndex = -1;
  88. for (int i = 0; i < matrix.length; i++) {
  89. if (matrix[i].equals(hiddenColumn)) {
  90. hiddenColumnIndex = i;
  91. break;
  92. }
  93. }
  94. return hiddenColumnIndex;
  95. }
  96. }
Advertisement
Add Comment
Please, Sign In to add comment