Valik98

Wrong Measurements

Jan 6th, 2020
382
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.64 KB | None | 0 0
  1. package MultidimensionalArrays_1;
  2.  
  3. import java.util.Arrays;
  4. import java.util.Scanner;
  5.  
  6. public class WrongMeasurements {
  7.     private static int[][] readMatrix(int rows, Scanner console) {
  8.         int[][] matrix = new int[rows][];
  9.  
  10.         for (int c = 0; c < rows; c++) {
  11.             matrix[c] = Arrays.stream(console.nextLine().split("\\s+")).mapToInt(Integer::parseInt).toArray();
  12.         }
  13.  
  14.         return matrix;
  15.     }
  16.  
  17.     private static int[] targetPosition(Scanner console) {
  18.         return Arrays.stream(console.nextLine()
  19.                 .split("\\s+")).mapToInt(Integer::parseInt)
  20.                 .toArray();
  21.     }
  22.  
  23.     private static int directionUp(int row, int col, int number, int[][] matrix) {
  24.         int upperNumber;
  25.  
  26.         try {
  27.             upperNumber = matrix[row][col];
  28.             if (upperNumber == number) {
  29.                 return 0;
  30.             }else {
  31.                 return upperNumber;
  32.             }
  33.         } catch (ArrayIndexOutOfBoundsException e){
  34.             upperNumber = 0;
  35.         }
  36.         return upperNumber;
  37.     }
  38.  
  39.     private static int directionDown(int row, int col, int number, int[][] matrix) {
  40.         int numberBelow;
  41.  
  42.         try {
  43.             numberBelow = matrix[row][col];
  44.             if (numberBelow == number) {
  45.                 return 0;
  46.             }else {
  47.                 return numberBelow;
  48.             }
  49.         } catch (ArrayIndexOutOfBoundsException e){
  50.             numberBelow = 0;
  51.         }
  52.         return numberBelow;
  53.     }
  54.  
  55.     private static int directionLeft(int row, int col, int number, int[][] matrix) {
  56.         int leftNumber;
  57.  
  58.         try {
  59.             leftNumber = matrix[row][col];
  60.             if (leftNumber == number) {
  61.                 return 0;
  62.             }else {
  63.                 return leftNumber;
  64.             }
  65.         } catch (ArrayIndexOutOfBoundsException e){
  66.             leftNumber = 0;
  67.         }
  68.         return leftNumber;
  69.     }
  70.  
  71.     private static int directionRight(int row, int col, int number, int[][] matrix) {
  72.         int rightNumber;
  73.  
  74.         try {
  75.             rightNumber = matrix[row][col];
  76.             if (rightNumber == number) {
  77.                 return 0;
  78.             }else {
  79.                 return rightNumber;
  80.             }
  81.         } catch (ArrayIndexOutOfBoundsException e){
  82.             rightNumber = 0;
  83.         }
  84.         return rightNumber;
  85.     }
  86.  
  87.     public static void main(String[] args) {
  88.         Scanner console = new Scanner(System.in);
  89.  
  90.         int rows = Integer.parseInt(console.nextLine());
  91.  
  92.         int[][] matrix = readMatrix(rows, console);
  93.  
  94.         int[] targetNumberPosition = targetPosition(console);
  95.  
  96.         int targetNumber = matrix[targetNumberPosition[0]][targetNumberPosition[1]];
  97.  
  98.         for (int row = 0; row < matrix.length; row++) {
  99.             for (int col = 0; col < matrix[row].length; col++) {
  100.                 int currentNumber = matrix[row][col];
  101.  
  102.                 if (currentNumber == targetNumber) {
  103.                     int upperNumber = directionUp(row - 1, col, currentNumber, matrix);
  104.                     int numberBelow = directionDown(row + 1, col, currentNumber, matrix);
  105.                     int leftNumber = directionLeft(row, col - 1, currentNumber, matrix);
  106.                     int rightNumber = directionRight(row, col + 1, currentNumber, matrix);
  107.  
  108.                     matrix[row][col] = upperNumber + numberBelow + leftNumber + rightNumber;
  109.                 }
  110.             }
  111.         }
  112.  
  113.         for (int[] ints : matrix) {
  114.             for (int anInt : ints) {
  115.                 System.out.print(anInt + " ");
  116.             }
  117.             System.out.println();
  118.         }
  119.     }
  120. }
Advertisement
Add Comment
Please, Sign In to add comment