Skip to content

Ch1F0N/Sultangulov_Java_Lab1

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 

Repository files navigation

Лабораторная работа №1 ЯП Java

Султангулов Данил

Группа ИТ-9-2024 (2 курс)

Вариант №10 (Чётные номера задач)


Тема: Процедурное программирование

Сперва я создал в своей лабораторной работе меню со всеми задания от 1 до 20, а также разделил их все на категории, чтобы пользователю было удобно выбирать, какую именно из программ он хочет использовать:

System.out.println("Меню заданий:\n" +
        "=======МЕТОДЫ=======\n" +
        "1. Сумма знаков\n" +
        "2. Есть ли позитив\n" +
        "3. Большая буква\n" +
        "4. Делитель\n" +
        "5. Многократный вызов\n" +
        "=======УСЛОВИЕ=======\n" +
        "6. Безопасное деление\n" +
        "7. Строка сравнения\n" +
        "8. Тройная сумма\n" +
        "9. Возраст\n" +
        "10. Вывод дней недели\n" +
        "========ЦИКЛЫ========\n" +
        "11. Числа наоборот\n" +
        "12. Степень числа\n" +
        "13. Одинаковость\n" +
        "14. Левый треугольник\n" +
        "15. Угадайка\n" +
        "=======МАССИВЫ=======\n" +
        "16. Поиск последнего значения\n" +
        "17. Добавление в массив\n" +
        "18. Реверс\n" +
        "19. Объединение\n" +
        "20. Удалить негатив\n" +
        "=====================\n" +
        "0. Выход\n");

System.out.print("Выберите задание из меню, которое хотите запустить: ");
int task_menu = scanner.nextInt();

Если пользователь введёт номер, которого нет в меню, или введёт иные символы, то в терминале вылезет предупреждение о неверном вводе и меню запуститься заново, чтобы выйти из программы, пользователю достаточно ввести в терминал '0'. Для запуска конкретной программы, я решил использовать конструкцию swith-case.


Задача 1 (Сумма знаков.):

Задача 1 заключается в том, чтобы в числе, которое вводит пользователь, складывались две последние цифры этого числа между собой и результат выводился обратно в терминал.

Для выполнения этого задания я создал метод public int sumLastNum(int x):

public int sumLastNums (int x) {
        int i = 2;             
        int y = 0;             
        int result = 0;        
        while (i != 0) {       
            i -= 1;
            y = x % 10;
            x /= 10;
            result += y;
        }
        return result;
    }

Создаю 3 новые переменные.

int i = 2;      // Переменная, которая отвечает за "шаги"
int y = 0;      // Переменная, которая хранит в себе последнюю цифру числа 'x'
int result = 0; // В эту переменную записываются результаты сложения последних цифр.

Запускаю цикл while, который работает до тех пор пока 'i' не станет равен нулю:

while (i != 0) {      
  i -= 1;      // Каждый шаг отнимаем 1 от переменной 'i'
  y = x % 10;  // Получаем последнюю цифру от числа 'x'
  x /= 10;     // Из числа 'x' убираем последнюю цифру
  result += y; // Складываем переменную 'y' (последнюю цифру)
}

И возращаем полученный результат:

return result;

Реализуем пользовательский ввод

System.out.println("Складываем последние 2 цифры числа 'x' между собой!");
System.out.print("Введите целое число x (Знаков в числе должно быть не менее двух): ");
int userNum = scanner.nextInt();
String strUserNum = Integer.toString(userNum);

if (strUserNum.length() < 2) {
    System.out.println("Число x должно состоять как минимум из двух знаков!");
    break;
}
else {
    System.out.println("Сумма двух последних чисел вашего числа " + userNum + ": " + lab1Method.sumLastNums(userNum));
    System.out.println();
}

Проверяем, чтобы пользователь ввёл как минимум два знака, иначе возвращаем его в меню:

if (strUserNum.length() < 2) {
    System.out.println("Число x должно состоять как минимум из двух знаков!");
    break;
}

Вызываем метод, если всё нормально:

System.out.println("Сумма двух последних чисел вашего числа " + userNum + ": " + lab1Method.sumLastNums(userNum));

Задача 2 (Есть ли позитив.):

Задача 2 заключается в том, чтобы программа выводила 'true', если пользователь ввёл положительное число.

Для выполнения этого задания я создал метод public boolean isPositive (int x):

public boolean isPositive (int x) {
        return x > 0;
    }

Метод возвращает 'true', если число x > 0, т.е является положительным.


Реализуем пользовательский ввод

System.out.println("Определяем, является ли число положительным или нет! (true/false)");
System.out.print("Введите целое число x: ");
userNum = scanner.nextInt();
System.out.println("Ответ: " + lab1Method.isPositive(userNum));

Задача 3 (Большая буква.):

Задача 3 заключается в том, что необходимо реализовать метод таким образом, чтобы он принимал символ x и возвращал true, если это большая буква в диапазоне от ‘A’ до ‘Z’.

Для выполнения этого задания я создал метод public boolean isUpperCase (char x):

public boolean isUpperCase (char x) {
    return 'A' <= x && x <= 'Z';
}

Метод возвращает 'true', если буква является заглавной и находится в диапозоне [A-Z]


Реализуем пользовательский ввод

System.out.println("Определяем, является ли буква заглавной или нет! (true/false)");
System.out.print("Введите букву: ");
char letter = scanner.next().charAt(0);
System.out.println("Ответ: " + lab1Method.isUpperCase(letter));

Задача 4 (Делитель.):

Задача 4 заключается в том, что необходимо реализовать метод таким образом, чтобы он возвращал true, если любое из принятых чисел делит другое нацело.

Для выполнения этого задания я создал метод public boolean isDivisor (int a, int b):

public boolean isDivisor (int a, int b) {
    try {
        return a % b == 0 || b % a == 0;
    }
    catch (ArithmeticException e) {
        return false;
    }
}

Я использую конструктор try-catch, чтобы в случае деления на 0 ответ был просто false, а не ошибка.

Возвращаем true, если остаток от деления a на b или b на а был равен 0:

return a % b == 0 || b % a == 0;

Реализуем пользовательский ввод

System.out.println("Определяем, делится ли одно число на другое нацело или нет! (true/false)");
System.out.println("Введите целые числа a и b через Enter: ");
System.out.print("a: ");
int firstNum = scanner.nextInt();
System.out.print("b: ");
int secondNum = scanner.nextInt();
System.out.println("Ответ: " + lab1Method.isDivisor(firstChar, secondChar));

Задача 5 (Многократный вызов.):

Задача 5 заключается в том, что необходимо реализовать метод таким образом, чтобы он считал сумму цифр двух чисел из разряда единиц. Таким методом нужно сложить подряд 5 чисел.

Для выполнения этого задания я создал метод public int lastNumSum(int a, int b):

public int lastNumSum(int a, int b) {
    return a % 10 + b % 10;
}

Возвращаем результат складывания последней цифры числа 'a' и последней цифры числа 'b'.

return a % 10 + b % 10;

Реализуем пользовательский ввод

System.out.println("Складываем последние цифры 5 чисел между собой!");
System.out.println("Введите целые числа a и b через Enter: ");
int i = 1;
System.out.println(i + ")");
i += 1;
System.out.print("a: ");
int firstNum5 = scanner.nextInt();
System.out.print("b: ");
int secondNum5 = scanner.nextInt();
int result = lab1Method.lastNumSum(firstNum5, secondNum5);
System.out.println("Ответ: " + result);
while (i != 5) {
    System.out.println(i + ")");
    System.out.print("Введите ещё одно число: ");
    secondNum5 = scanner.nextInt();
    System.out.println("Ответ: " + lab1Method.lastNumSum(result, secondNum5));
    result = lab1Method.lastNumSum(result, secondNum5);
    i += 1;
}

Запускаем цикл while, пока вспомогательная переменная 'i' не будет равна 5 ('i' увеличивается для нумерации действий, а также кол-ва запусков цикла):

while (i != 5) {
    System.out.println(i + ")");
    System.out.print("Введите ещё одно число: ");
    secondNum5 = scanner.nextInt();
    System.out.println("Ответ: " + lab1Method.lastNumSum(result, secondNum5));
    result = lab1Method.lastNumSum(result, secondNum5);
    i += 1;

Задача 6 (Безопасное деление.):

Задача 6 заключается в том, что нужно реализовать метод, который возвращает результат деления x на y, при этом избегая ошибки деления на 0.

Для выполнения этого задания я создал метод public double safeDiv (int x, int y):

public double safeDiv (int x, int y) {
    if (y==0) {
        return y;
    }
    return (double) x / y;
}

Проверяю, равен ли y нулю, если это так, возвращаю 'y', т.е 0:

if (y==0) {
        return y;
    }

Иначе возвращаю результат деления 'x' на 'y' с плавающей точкой:

return (double) x / y;

Реализуем пользовательский ввод

System.out.println("Делим два числа между собой!");
System.out.println("Введите целые числа x и y через Enter: ");
System.out.print("x: ");
int firstNum6 = scanner.nextInt();
System.out.print("y: ");
int secondNum6 = scanner.nextInt();
System.out.println("Ответ: " + lab1Method.safeDiv(firstNum6, secondNum6));

Задача 7 (Строка сравнения.):

Задача 7 заключается в том, что метод должен сравнивать два числа между собой и выводить строку с правильно выставленным знаком (<, >, ==).

Для выполнения этого задания я создал метод public String makeDecision (int x, int y):

public String makeDecision (int x, int y) {
    if (x > y) {
        return x + " > " + y;  // Если 'x' больше 'y' возвращаем строку 'x > y'
    }

    else if (x < y) {
        return x + " < " + y;  // Если 'x' меньше 'y' возвращаем строку 'x < y'
    }

    else {
        return x + " == " + y;  // Если 'x' эквивалентно 'y' возвращаем строку 'x == y'
    }
}

Реализуем пользовательский ввод

System.out.println("Сравниваем два числа между собой!");
System.out.println("Введите целые числа x и y через Enter: ");
System.out.print("x: ");
int firstNum7 = scanner.nextInt();
System.out.print("y: ");
int secondNum7 = scanner.nextInt();
System.out.println("Ответ: " + lab1Method.makeDecision(firstNum7, secondNum7));

Задача 8 (Тройная сумма.):

Задача 8 заключается в том, чтобы метод возвращал 'true', если в результате сложения любых двух чисел можно получить третье.

Для выполнения этого задания я создал метод public boolean sum3 (int x, int y, int z):

public boolean sum3 (int x, int y, int z) {
    return x + y == z || x + z == y || y + z == x;
}

Метод рассматривает 3 решения и если хоть одно из них подходит под условия - возвращается 'true'


Реализуем пользовательский ввод

System.out.println("Определяем, получится ли сложив два числа получить третье! (true/false)");
System.out.println("Введите целые числа x, y и z через Enter: ");
System.out.print("x: ");
int firstNum8 = scanner.nextInt();
System.out.print("y: ");
int secondNum8 = scanner.nextInt();
System.out.print("z: ");
int thirdNum8 = scanner.nextInt();
System.out.println("Ответ: " + lab1Method.sum3(firstNum8, secondNum8, thirdNum8));

Задача 9 (Возраст.):

Задача 9 заключается в том, чтобы реализовать метод, который возвращает строку 'число + год/года/лет'.

Для выполнения этого задания я создал метод public String age (int x):

public String age (int x) {
    if (x % 10 == 1 & x != 11) {
        return x + " год";
    }

    else if (x % 10 == 2 || x % 10 == 3 || x % 10 == 4 & x != 12 & x != 13 & x != 14) {
        return x + " года";
    }

    else {
        return x + " лет";
    }
}

Чтобы определить какое именно слово должно стоять после числа - отделяем последнюю цифру, также учитываем числа "исключения", например 11, после которого должно стоять слово 'лет', а не 'год'


Реализуем пользовательский ввод

System.out.println("Определяем какое слово (год/года/лет) будет стоять после вашего числа!");
System.out.print("Введите целое число x: ");
int userAge = scanner.nextInt();
System.out.println("Ответ: " + lab1Method.age(userAge));

Задача 10 (Вывод дней недели.):

Задача 10 заключается в том, чтобы реализовать метод, который будет выводить переданный в него день недели и все последующие.

Для выполнения этого задания я создал метод public void printDays (String x):

public void printDays (String x) {
    switch (x) {
        case "понедельник": System.out.println("понедельник");
        case "вторник": System.out.println("вторник");
        case "среда": System.out.println("среда");
        case "четверг": System.out.println("четверг");
        case "пятница": System.out.println("пятница");
        case "суббота": System.out.println("суббота");
        case "воскресенье": System.out.println("воскресенье"); break;

        default:
            System.out.println("Это не день недели!");
            break;

    }
}

Когда пользователь вводить названия для недели - запускаем нужный кейс и спускаемся ниже (выводим кейсы после него).


Реализуем пользовательский ввод

System.out.println("Выводим названия дней недели!");
System.out.print("Введите день недели: ");
scanner.nextLine();
String week = scanner.nextLine();
System.out.println("Ответ: ");
lab1Method.printDays(week);

Задача 11 (Числа наоборот.):

Задача 11 заключается в том, чтобы реализовать метод, который будет выводить значения от заданного числа 'x' до 0.

Для выполнения этого задания я создал метод public String reverseListNums (int x):

public String reverseListNums (int x) {
    for (int i = x; i >= 0; i--) {
        System.out.print(i + " ");
    }
    return "";
}

В цикле for я задал новую переменную 'i', которая изначально равна значению 'x', а далее с каждый шагов она уменьшается на 1, пока не дойдёт до нуля.

for (int i = x; i >= 0; i--)

Реализуем пользовательский ввод

System.out.println("Выводим строки от числа x до 0!");
System.out.print("Введите число x: ");
int reverseNum = scanner.nextInt();
System.out.println("Ответ: ");
lab1Method.reverseListNums(reverseNum);

Задача 12 (Степень числа.):

Задача 12 заключается в том, чтобы реализовать метод, который будет возводить заданное число 'x' в степень 'y'.

Для выполнения этого задания я создал метод public int pow (int x, int y):

public int pow (int x, int y) {
    int i = x;
    while (y > 1) {
        y -= 1;
        x *= i;
    }
    return x;
}

Переменную 'y' я использовал как вспомогательную для счёта шагов цикла while и с каждым таким шагом я умножал число 'x' на само себя, предварительно записав её значение в новую переменную 'i'(т.к переменная 'x' будет обновляться, а 'i' будет оставаться неизменной):

int i = x;
x *= i;

Реализуем пользовательский ввод

System.out.println("Возводим число 'x' в степень 'y'!");
System.out.print("Введите число x: ");
int normal = scanner.nextInt();
System.out.print("Введите число y: ");
int exponent = scanner.nextInt();
System.out.println("Ответ: " + lab1Method.pow(normal, exponent));

Задача 13 (Одинаковость.):

Задача 13 заключается в том, чтобы реализовать метод, который будет выводить 'true', если все цифры в заданном числе 'x' одинаковые и 'false' в ином случае.

Для выполнения этого задания я создал метод public boolean equalNum (int x):

public boolean equalNum (int x) {
    int y = x % 10;
    int z = 0;
    while (x != 0) {
        z = x % 10;
        if (z == y) {
            x /= 10;
        }
        else {
            return false;
        }
    }
    return true;
}

В переменную 'y' я сразу же записываю последнюю цифру числа 'x', т.к если все цифры будут одинаковые, то они обязательно будут равны 'y'. С помощью переменной 'z' я буду сравнивать её с переменной 'y' внутри цикла while, используя конструкцию if-else, пока число 'x' не станет равно 0 (цифры для проверки закончились):

if (z == y) {       // Пока z == y - убираем у числа 'x' последюю цифру
    x /= 10;
}
else {              // Как только цифра 'z' отличается от 'y' - возвращаем 'false'
    return false;

Реализуем пользовательский ввод

System.out.println("Определяем, все ли цифры в числе 'x' одинаковые! (true/false)");
System.out.print("Введите число x: ");
int same = scanner.nextInt();
System.out.println("Ответ: " + lab1Method.equalNum(same));

Задача 14 (Левый треугольник.):

Задача 14 заключается в том, чтобы реализовать метод, который будет строить треугольник из звёздочек, где кол-во звёзд в строке равно номеру строки.

Для выполнения этого задания я создал метод public void leftTriangle (int x):

public void leftTriangle (int x) {
    String star = "*";
    String repeats = null;
     for (int i = 1; i <= x; i++) {
         repeats = star.repeat(i);
         System.out.println(repeats);
     }
}

Использую цикл for и использую вспомогательную переменную 'i' для увеличения кол-ва звёздочек с каждой последующей строкой, пока 'i' не станет <= 'x':

for (int i = 1; i <= x; i++) {
    repeats = star.repeat(i);
    System.out.println(repeats);
}

Реализуем пользовательский ввод

System.out.println("Строим треугольник из звёздочек!");
System.out.print("Введите число x: ");
int triangle = scanner.nextInt();
System.out.println("Ответ: ");
lab1Method.leftTriangle(triangle);

Задача 15 (Угадайка.):

Задача 15 заключается в том, чтобы реализовать метод, который будет загадывать цифру от 0 до 9 и пользователь должен будет её отгадать.

Для выполнения этого задания я создал метод public void guessGame():

public void guessGame() {
int userTry = 0;
Random rand = new Random();
int answer = rand.nextInt(0,10);
while (true) {
    Scanner scanner = new Scanner(System.in);
    System.out.print("Угадайте какая цифра от 0 до 9 была задана: ");
    int userInput = scanner.nextInt();

    if (userInput == answer) {
        userTry += 1;
        if (userTry % 10 == 1 & userTry != 11) {
            System.out.println("Поздравляем, вы угадали число за " + userTry + " попытку!");
            break;
        }

        else if (userTry % 10 == 2 || userTry % 10 == 3 || userTry % 10 == 4 & userTry != 12  & userTry != 13  & userTry != 14) {
            System.out.println("Поздравляем, вы угадали число за " + userTry + " попытки!");
            break;
        }

        else {
            System.out.println("Поздравляем, вы угадали число за " + userTry + " попыток!");
            break;
        }
    }

    else if (userInput > 9 || userInput < 0) {
        System.out.println("Вы ввели число, которого нет в выборе!");
    }

    else {
        System.out.println("Вы не угадали, попробуйте ещё раз!");
        userTry += 1;
    }
}
}

Задаю новую переменную 'userTry', в которую буду записывать кол-во попыток, которые пришлось сделать пользователю, чтобы отгадать число:

int userTry = 0;

Создаю рандомный правильный ответ от 0 до 9 с помощью встроенного метода Random() и записываю это значение в переменную 'answer':

Random rand = new Random();
int answer = rand.nextInt(0,10);   // 10 не учитывается

Запускаю цикл while (true), чтобы программа работала до тех пор пока пользователь не отгадает правильное число.

Использую конструкцию if-else, чтобы определить равно ли значение, которое ввёл пользователь загаданному программой:

if (userInput == answer) {
userTry += 1;   // Прибавляем +1 попытку 
if (userTry % 10 == 1 & userTry != 11) {
    System.out.println("Поздравляем, вы угадали число за " + userTry + " попытку!");
    break;
}

Если число, которое ввёл пользователь не равно загаданному, то мы сообщаем пользователю, что он не угадал и прибавляем +1 попытку:

else {
    System.out.println("Вы не угадали, попробуйте ещё раз!");
    userTry += 1;
}

Также проверяем, чтобы пользователь не ввёл значение меньше 0 или больше 9, чтобы не насчитывать лишние попытки:

else if (userInput > 9 || userInput < 0) {
    System.out.println("Вы ввели число, которого нет в выборе!");
}

Реализуем пользовательский ввод Здесь в отличие от других задач пользовательский ввод реализован внутри самого метода:

Scanner scanner = new Scanner(System.in);
System.out.print("Угадайте какая цифра от 0 до 9 была задана: ");
int user_input = scanner.nextInt();

Задача 16 (Поиск последнего значения.):

Задача 16 заключается в том, чтобы реализовать метод, который будет выводить индекс последнего вхождения числа 'x' в массив.

Для выполнения этого задания я создал метод public int findLast (int[] arr, int x):

public int findLast (int[] arr, int x) {
    int result = -1;
    for (int el = arr.length - 1; el > 0; el--) {
        if (arr[el] == x) {
            result = el;
            break;
        }
    }
    return result;
}

Задаём переменную для записи ответа, которой сразу присваиваем значение -1, т.к по условиям задачи сказано, что если введёного числа нет в массиве - ответ будет '-1':

int result = -1;

С помощью цикла for проверяю все числа сразу с конца массива, т.к это и будет являться последним вхождением числа:

for (int el = arr.length - 1; el > 0; el--)

С помощью if проверяю, равно ли число с индексом 'el' введёному пользователем, если это так, то в ответ записываем индекс этого числа в массиве:

if (arr[el] == x) {
    result = el;
    break;
}

Реализуем пользовательский ввод

System.out.println("Находим последний индекс вхождения числа 'x' в массив!");
System.out.print("Введите длину массива: ");
int userLenght16 = scanner.nextInt();
int[] userArray16 = new int[userLenght16];

System.out.print("Введите элементы массива через пробел: ");
for (int el = 0; el < userLenght16; el++) {
    userArray16[el] = scanner.nextInt();
}

System.out.println("Исходный массив: " + Arrays.toString(userArray16));

System.out.print("Введите число x: ");
int userNum16 = scanner.nextInt();
System.out.println("Индекс вашего числа в массиве: " + lab1Method.findLast(userArray16, userNum16));

Запрашиваем у пользователя какой длинны должен быть наш массив, чтобы java могла выделить для этого нужную память и создаём новым массив заданной длины:

System.out.println("Находим последний индекс вхождения числа 'x' в массив!");
System.out.print("Введите длину массива: ");
int userLenght16 = scanner.nextInt();
int[] userArray16 = new int[userLenght16];

Запрашиваем у пользователя ввод элементов и расставляем их в массиве длиной 'userLenght16':

System.out.print("Введите элементы массива через пробел: ");
for (int el = 0; el < userLenght16; el++) {
    userArray16[el] = scanner.nextInt();
}

Задача 17 (Добавление в массив.):

Задача 17 заключается в том, чтобы реализовать метод, который будет ставить число 'x' в массив на индекс 'pos'.

Для выполнения этого задания я создал метод public int[]add (int[] arr, int x, int pos):

public int[]add (int[] arr, int x, int pos) {
    arr[pos] = x;
    return arr;
}

Заменяем число arr[pos] на наше число 'x' и возвращаем новый массив.


Реализуем пользовательский ввод

System.out.println("Вставляем ваше число 'x' на выбранное вами место в массиве!");
System.out.print("Введите длину массива: ");
int userLenght17 = scanner.nextInt();
int[] userArray17 = new int[userLenght17];

System.out.print("Введите элементы массива через пробел: ");
for (int el = 0; el < userLenght17; el++) {
    userArray17[el] = scanner.nextInt();
}

System.out.println("Исходный массив: " + Arrays.toString(userArray17));

System.out.print("Введите число x: ");
int userNum17 = scanner.nextInt();

System.out.print("Введите индекс числа в массиве на месте которого будет стоять число 'x': ");
int pos = scanner.nextInt();
System.out.println("Новый массив с заменой числа: " + Arrays.toString(lab1Method.add(userArray17, userNum17, pos)));

Задача 18 (Реверс.):

Задача 18 заключается в том, чтобы реализовать метод, который будет выводить исходный массив задом-наперёд.

Для выполнения этого задания я создал метод public void reverse (int[] arr):

public void reverse (int[] arr) {
    int [] new_arr = new int[arr.length];
    int el = 0;
    for (int rev_el = arr.length - 1; rev_el > -1; rev_el--) {
        new_arr[el] = arr[rev_el];
        el += 1;
    }
    System.out.print(Arrays.toString(new_arr));
}

Создаём новый массив той же длины, что и исходный:

int [] new_arr = new int[arr.length];

С помощью цикла for задаём новую переменную 'rev_el', которая будет отвечать за индекс, начиная с последнего числа исходного массива:

for (int rev_el = arr.length - 1; rev_el > -1; rev_el--)

Присваиваем первому элементу нового массива под индексом 0 последний элемент исходного массива:

new_arr[el] = arr[rev_el];
el += 1;        // Переходим на следующий элемент нового массива

Реализуем пользовательский ввод

System.out.println("Делаем ваш массив задом-наперёд!");
System.out.print("Введите длину массива: ");
int userLenght18 = scanner.nextInt();
int[] userArray18 = new int[userLenght18];

System.out.print("Введите элементы массива через пробел: ");
for (int el = 0; el < userLenght18; el++) {
    userArray18[el] = scanner.nextInt();
}

System.out.println("Исходный массив: " + Arrays.toString(userArray18));
System.out.print("Массив задом-наперёд: ");
lab1Method.reverse(userArray18);

Задача 19 (Объединение.):

Задача 19 заключается в том, чтобы реализовать метод, который будет соединять два массива в один.

Для выполнения этого задания я создал метод public int[] concat (int[] arr1,int[] arr2):

public int[] concat (int[] arr1,int[] arr2) {
    int index = 0;
    int [] both_arr = new int[arr1.length + arr2.length];

    for (int el : arr1) {
        both_arr[index] = el;
        index++;
    }

    for (int el : arr2) {
        both_arr[index] = el;
        index++;
    }
    return both_arr;
}

Создаём новый массив, длина которого равна сумме длин двух исходных массивов:

int [] both_arr = new int[arr1.length + arr2.length];

Используем цикл for для записи сначала элементов первого массива, а затем второго:

for (int el : arr1) {
    both_arr[index] = el;
    index++;
}

for (int el : arr2) {
    both_arr[index] = el;
    index++;
}

Реализуем пользовательский ввод

System.out.println("Склеиваем два ваших массива в один!");
System.out.print("Введите длину массива: ");
int userLenght19 = scanner.nextInt();
int[] userArray19 = new int[userLenght19];
int[] userArray192 = new int[userLenght19];

System.out.print("Введите элементы первого массива через пробел: ");
for (int el = 0; el < userLenght19; el++) {
    userArray19[el] = scanner.nextInt();
}

System.out.print("Введите элементы второго массива через пробел: ");
for (int el = 0; el < userLenght19; el++) {
    userArray192[el] = scanner.nextInt();
}

System.out.println("Ваш новый массив: " + Arrays.toString(lab1Method.concat(userArray19, userArray192)));

Задача 20 (Удалить негатив.):

Задача 20 заключается в том, чтобы реализовать метод, который будет убирать из массива отрицательные числа и возвращать новый уже без них.

Для выполнения этого задания я создал метод public int[] deleteNegative (int[] arr):

public int[] deleteNegative (int[] arr) {
    int index = 0;
    int negative_count = 0;
    for (int el : arr) {
        if (el < 0) {
            negative_count += 1;
        }
    }
    int [] clear_arr = new int[arr.length - negative_count];
    for (int el : arr) {
        if (el > 0) {
            clear_arr[index] = el;
            index++;
        }
    }
    return clear_arr;
}

Для начала я считаю кол-во отрицательных чисел в исходном массиве в переменной 'negative_count', чтобы создать новый массив нужной длины без лишних элементов и использую для этого цикл for

for (int el : arr) {
    if (el < 0) {
        negative_count += 1;
    }
}

Записываем в новый массив только положительные числа из исходного массива, используя цикл for:

for (int el : arr) {
    if (el > 0) {
        clear_arr[index] = el;
        index++;
    }
}

Реализуем пользовательский ввод

System.out.println("Убираем отрицательные числа из вашего массива!");
System.out.print("Введите длину массива: ");
int userLenght20 = scanner.nextInt();
int[] userArray20 = new int[userLenght20];

System.out.print("Введите элементы массива через пробел: ");
for (int el = 0; el < userLenght20; el++) {
    userArray20[el] = scanner.nextInt();
}

System.out.println("Исходный массив: " + Arrays.toString(userArray20));

System.out.println("Ваш новый массив: " + Arrays.toString(lab1Method.deleteNegative(userArray20)));

Защита от ошибок

Для защиты от неверного ввода используется конструкция try-catch.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages