Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package MultidimensionalArrays_1;
- import java.util.Arrays;
- import java.util.Scanner;
- public class WrongMeasurements {
- private static int[][] readMatrix(int rows, Scanner console) {
- int[][] matrix = new int[rows][];
- for (int c = 0; c < rows; c++) {
- matrix[c] = Arrays.stream(console.nextLine().split("\\s+")).mapToInt(Integer::parseInt).toArray();
- }
- return matrix;
- }
- private static int[] targetPosition(Scanner console) {
- return Arrays.stream(console.nextLine()
- .split("\\s+")).mapToInt(Integer::parseInt)
- .toArray();
- }
- private static int directionUp(int row, int col, int number, int[][] matrix) {
- int upperNumber;
- try {
- upperNumber = matrix[row][col];
- if (upperNumber == number) {
- return 0;
- }else {
- return upperNumber;
- }
- } catch (ArrayIndexOutOfBoundsException e){
- upperNumber = 0;
- }
- return upperNumber;
- }
- private static int directionDown(int row, int col, int number, int[][] matrix) {
- int numberBelow;
- try {
- numberBelow = matrix[row][col];
- if (numberBelow == number) {
- return 0;
- }else {
- return numberBelow;
- }
- } catch (ArrayIndexOutOfBoundsException e){
- numberBelow = 0;
- }
- return numberBelow;
- }
- private static int directionLeft(int row, int col, int number, int[][] matrix) {
- int leftNumber;
- try {
- leftNumber = matrix[row][col];
- if (leftNumber == number) {
- return 0;
- }else {
- return leftNumber;
- }
- } catch (ArrayIndexOutOfBoundsException e){
- leftNumber = 0;
- }
- return leftNumber;
- }
- private static int directionRight(int row, int col, int number, int[][] matrix) {
- int rightNumber;
- try {
- rightNumber = matrix[row][col];
- if (rightNumber == number) {
- return 0;
- }else {
- return rightNumber;
- }
- } catch (ArrayIndexOutOfBoundsException e){
- rightNumber = 0;
- }
- return rightNumber;
- }
- public static void main(String[] args) {
- Scanner console = new Scanner(System.in);
- int rows = Integer.parseInt(console.nextLine());
- int[][] matrix = readMatrix(rows, console);
- int[] targetNumberPosition = targetPosition(console);
- int targetNumber = matrix[targetNumberPosition[0]][targetNumberPosition[1]];
- for (int row = 0; row < matrix.length; row++) {
- for (int col = 0; col < matrix[row].length; col++) {
- int currentNumber = matrix[row][col];
- if (currentNumber == targetNumber) {
- int upperNumber = directionUp(row - 1, col, currentNumber, matrix);
- int numberBelow = directionDown(row + 1, col, currentNumber, matrix);
- int leftNumber = directionLeft(row, col - 1, currentNumber, matrix);
- int rightNumber = directionRight(row, col + 1, currentNumber, matrix);
- matrix[row][col] = upperNumber + numberBelow + leftNumber + rightNumber;
- }
- }
- }
- for (int[] ints : matrix) {
- for (int anInt : ints) {
- System.out.print(anInt + " ");
- }
- System.out.println();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment