SotirovG

WrongMeasurements_08/JavaAdvanced

Sep 19th, 2021
825
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package JavaProModule.JavaAdvanced.MultidimensionalArraysLab;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Arrays;
  5. import java.util.List;
  6. import java.util.Scanner;
  7.  
  8. public class WrongMeasurements_08 {
  9.     public static void main(String[] args) {
  10.         Scanner read = new Scanner(System.in);
  11.  
  12.         int rows = Integer.parseInt(read.nextLine());
  13.         int[][] matrix = new int[rows][];
  14.  
  15.         for (int row = 0; row < rows; row++) {
  16.             matrix[row] = readArray(read, "\\s+");
  17.         }
  18.         int[] indexes = readArray(read, "\\s+");
  19.         int indexesToRemove = matrix[indexes[0]][indexes[1]];
  20.  
  21.         List<int[]> wrongIndex = new ArrayList<>();
  22.         List<Integer> validIndex = new ArrayList<>();
  23.  
  24.  
  25.         for (int row = 0; row < matrix.length; row++) {
  26.             for (int col = 0; col < matrix[row].length; col++) {
  27.  
  28.                 if (matrix[row][col] == indexesToRemove) {
  29.                     wrongIndex.add(new int[]{row, col});
  30.                     validIndex.add(getValidIndex(matrix, row, col));
  31.                 }
  32.             }
  33.         }
  34.         for (int index = 0; index < wrongIndex.size(); index++) {
  35.             int [] lastIndex = wrongIndex.get(index);
  36.             matrix [lastIndex[0]][lastIndex[1]] = validIndex.get(index);
  37.         }
  38.         for (int row = 0; row < matrix.length; row++) {
  39.             for (int col = 0; col < matrix[row].length; col++) {
  40.                 System.out.print(matrix [row][col] + " ");
  41.             }
  42.             System.out.println();
  43.         }
  44.  
  45.  
  46.     }
  47.  
  48.     private static int getValidIndex(int[][] matrix, int row, int col) {
  49.  
  50.         int sum = 0;
  51.         int wrongValue = matrix[row][col];
  52.  
  53.         if (isInBounds(matrix,row - 1,col) && wrongValue != matrix[row - 1][col]){
  54.             sum += matrix [row - 1][col];
  55.         }
  56.         if (isInBounds(matrix,row +1,col) && wrongValue != matrix[row + 1][col]){
  57.             sum += matrix [row + 1][col];
  58.         }
  59.         if (isInBounds(matrix,row,col - 1) && wrongValue != matrix[row][col - 1]){
  60.             sum += matrix [row][col - 1];
  61.         }
  62.         if (isInBounds(matrix,row,col + 1) && wrongValue != matrix[row][col + 1]){
  63.             sum += matrix [row][col + 1];
  64.         }
  65.  
  66.         return sum;
  67.     }
  68.  
  69.     private static boolean isInBounds(int[][] matrix, int row, int col) {
  70.         return row >= 0 && row < matrix.length && col >= 0 && col < matrix[row].length;
  71.     }
  72.  
  73.     private static int[] readArray(Scanner read, String separator) {
  74.         return Arrays.stream(read.nextLine().split(separator))
  75.                 .mapToInt(Integer::parseInt)
  76.                 .toArray();
  77.     }
  78. }
  79.  
RAW Paste Data