diff --git a/proJect/src/main/java/anlov/java/Array.java b/proJect/src/main/java/anlov/java/Array.java new file mode 100644 index 0000000..9c69d30 --- /dev/null +++ b/proJect/src/main/java/anlov/java/Array.java @@ -0,0 +1,47 @@ +package anlov.java; + +public class Array { + + private static int sumArray; + private final static int ARRAYSIZE = 4; + + private Array() { + } + + public static int getSumArray(String[][] array) throws MyArraySizeException, MyArrayDataException { + checkArraySize(array); + + for (int i = 0; i < ARRAYSIZE; i++) { + for (int j = 0; j < ARRAYSIZE; j++) { + if (!isInt(array[i][j])) { + throw new MyArrayDataException("Введенное значение, не является числом", i, j); + } + sumArray += Integer.parseInt(array[i][j]); + } + } + return sumArray; + } + + private static void checkArraySize(String[][] array) throws MyArraySizeException { + int rowArray = array.length; + int columnArray = array[0].length; + + if (rowArray > ARRAYSIZE || columnArray > ARRAYSIZE) { + throw new MyArraySizeException("Массив выходит за границы допустимого, попробуйте ввести масси 4х4", + rowArray, columnArray); + } + if (rowArray < ARRAYSIZE || columnArray < ARRAYSIZE) { + throw new MyArraySizeException("Размер массива меньше допустимого, попробуйте ввести массив 4х4", + rowArray, columnArray); + } + } + + private static boolean isInt(String convert) { + try { + Integer.parseInt(convert); + return true; + } catch (NumberFormatException notInt) { + return false; + } + } +} diff --git a/proJect/src/main/java/anlov/java/Main.java b/proJect/src/main/java/anlov/java/Main.java index 2109cb3..38a8aa1 100644 --- a/proJect/src/main/java/anlov/java/Main.java +++ b/proJect/src/main/java/anlov/java/Main.java @@ -1,9 +1,18 @@ package anlov.java; -import java.util.Arrays; - public class Main { public static void main(String[] args) { + String[][] array = {{"1", "2", "3", "4"}, {"5", "6", "7", "8"}, + {"9", "15", "11", "12"}, {"13", "14", "15", "16"}}; + + try { + System.out.println(Array.getSumArray(array)); + } catch (MyArraySizeException size) { + System.out.println(size.getMessage() + ", введенный массив имеет размер " + size.getArraySize()); + } catch (MyArrayDataException data) { + System.out.println(data.getMessage() + " " + data.getArrayIndex()); + } + } } \ No newline at end of file diff --git a/proJect/src/main/java/anlov/java/MyArrayDataException.java b/proJect/src/main/java/anlov/java/MyArrayDataException.java new file mode 100644 index 0000000..3f24880 --- /dev/null +++ b/proJect/src/main/java/anlov/java/MyArrayDataException.java @@ -0,0 +1,17 @@ +package anlov.java; + + +public class MyArrayDataException extends Exception { + private final int rowArrayIndex; + private final int columnArrayIndex; + + public MyArrayDataException(String info, int rowArrayIndex, int columnArrayIndex) { + super(info); + this.rowArrayIndex = rowArrayIndex; + this.columnArrayIndex = columnArrayIndex; + } + + public String getArrayIndex() { + return "[" + rowArrayIndex + "]" + "[" + columnArrayIndex + "]"; + } +} diff --git a/proJect/src/main/java/anlov/java/MyArraySizeException.java b/proJect/src/main/java/anlov/java/MyArraySizeException.java new file mode 100644 index 0000000..1711bd2 --- /dev/null +++ b/proJect/src/main/java/anlov/java/MyArraySizeException.java @@ -0,0 +1,17 @@ +package anlov.java; + +public class MyArraySizeException extends Exception { + + private final int rowArray; + private final int columnArray; + + public MyArraySizeException(String info, int rowArray, int columnArray) { + super(info); + this.rowArray = rowArray; + this.columnArray = columnArray; + } + + public String getArraySize() { + return rowArray + "x" + columnArray; + } +}