Как проверить, содержит ли массив только положительные числа на Java

JavaJavaBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабораторном занятии (LabEx) вы научитесь проверять, содержит ли массив только положительные числа на Java. Мы рассмотрим различные подходы для достижения этой цели, начиная с основного метода, который использует цикл для перебора элементов массива и проверки каждого элемента по отдельности.

После базового метода с использованием цикла мы углубимся в использование Java Stream API, более современного и часто более компактного способа обработки коллекций. Наконец, мы обсудим, как обрабатывать нули и отрицательные числа в контексте определения, содержит ли массив только положительные значения. В этом лабораторном занятии вы получите практические навыки работы с массивами и условной логикой на Java.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/DataStructuresGroup(["Data Structures"]) java(("Java")) -.-> java/ProgrammingTechniquesGroup(["Programming Techniques"]) java(("Java")) -.-> java/FileandIOManagementGroup(["File and I/O Management"]) java/BasicSyntaxGroup -.-> java/if_else("If...Else") java/BasicSyntaxGroup -.-> java/for_loop("For Loop") java/DataStructuresGroup -.-> java/arrays("Arrays") java/ProgrammingTechniquesGroup -.-> java/lambda("Lambda") java/FileandIOManagementGroup -.-> java/stream("Stream") subgraph Lab Skills java/if_else -.-> lab-559999{{"Как проверить, содержит ли массив только положительные числа на Java"}} java/for_loop -.-> lab-559999{{"Как проверить, содержит ли массив только положительные числа на Java"}} java/arrays -.-> lab-559999{{"Как проверить, содержит ли массив только положительные числа на Java"}} java/lambda -.-> lab-559999{{"Как проверить, содержит ли массив только положительные числа на Java"}} java/stream -.-> lab-559999{{"Как проверить, содержит ли массив только положительные числа на Java"}} end

Перебор массива для проверки на положительные числа

На этом этапе мы научимся перебирать массив чисел на Java и проверять, является ли каждое число положительным. Это фундаментальная операция в программировании, которая позволяет нам обрабатывать наборы данных.

Сначала создадим новый Java-файл с именем PositiveCheck.java в директории ~/project. Для этого можно кликнуть правой кнопкой мыши в проводнике файлов слева и выбрать "New File", а затем ввести PositiveCheck.java.

Теперь откройте файл PositiveCheck.java в редакторе и добавьте следующий код:

public class PositiveCheck {

    public static void main(String[] args) {
        // Define an array of integers
        int[] numbers = {10, -5, 20, 0, 15, -8};

        // Loop through the array
        for (int i = 0; i < numbers.length; i++) {
            // Get the current number
            int currentNumber = numbers[i];

            // Check if the number is positive
            if (currentNumber > 0) {
                System.out.println(currentNumber + " is a positive number.");
            }
        }
    }
}

Разберем этот код:

  • public class PositiveCheck: Это объявление нашего класса, которое соответствует имени файла.
  • public static void main(String[] args): Это главный метод, с которого начинается выполнение нашей программы.
  • int[] numbers = {10, -5, 20, 0, 15, -8};: Эта строка объявляет массив целых чисел с именем numbers и инициализирует его некоторыми значениями. Массив - это набор элементов одного и того же типа данных.
  • for (int i = 0; i < numbers.length; i++): Это цикл for. Это управляющая структура, которая позволяет нам повторять блок кода несколько раз.
    • int i = 0: Это инициализация счетчика i со значением 0.
    • i < numbers.length: Это условие, которое проверяется перед каждой итерацией. Цикл продолжается, пока i меньше длины массива numbers. numbers.length возвращает количество элементов в массиве.
    • i++: Это увеличение счетчика i на 1 после каждой итерации.
  • int currentNumber = numbers[i];: Внутри цикла эта строка обращается к элементу с текущим индексом i в массиве numbers и сохраняет его в переменную currentNumber. Индексы массива начинаются с 0.
  • if (currentNumber > 0): Это оператор if. Он проверяет, больше ли currentNumber 0.
  • System.out.println(currentNumber + " is a positive number.");: Эта строка выполняется только в том случае, если условие if истинно (т.е. число положительное). Она выводит положительное число, за которым следует текст " is a positive number.".

Сохраните файл PositiveCheck.java (Ctrl+S или Cmd+S).

Теперь скомпилируем и запустим эту программу в терминале. Убедитесь, что вы находитесь в директории ~/project.

Скомпилируйте код:

javac PositiveCheck.java

Если нет ошибок, будет создан файл PositiveCheck.class.

Теперь запустите скомпилированный код:

java PositiveCheck

Вы должны увидеть вывод, показывающий только положительные числа из массива.

10 is a positive number.
20 is a positive number.
15 is a positive number.

Это демонстрирует, как использовать цикл for для перебора массива и применения условия к каждому элементу. На следующем этапе мы рассмотрим более современный способ достижения аналогичного результата с использованием Stream API Java.

Использование Stream API для поиска положительных чисел

На этом этапе мы рассмотрим более современный и часто более компактный способ обработки коллекций на Java: Stream API. Введенное в Java 8, Stream API предоставляет мощный инструмент для выполнения операций, таких как фильтрация, преобразование и агрегация данных в коллекциях.

Мы модифицируем предыдущий пример, чтобы использовать Stream API для поиска положительных чисел в массиве.

Откройте файл PositiveCheck.java в редакторе еще раз. Замените существующий код следующим:

import java.util.Arrays;

public class PositiveCheck {

    public static void main(String[] args) {
        // Define an array of integers
        int[] numbers = {10, -5, 20, 0, 15, -8};

        // Use Stream API to filter and print positive numbers
        Arrays.stream(numbers) // 1. Create a stream from the array
              .filter(number -> number > 0) // 2. Filter for positive numbers
              .forEach(number -> System.out.println(number + " is a positive number (Stream).")); // 3. Process each positive number
    }
}

Рассмотрим новые части этого кода:

  • import java.util.Arrays;: Мы должны импортировать класс Arrays, чтобы использовать его метод stream().
  • Arrays.stream(numbers): Эта строка преобразует наш массив int в IntStream. Поток (stream) сам по себе не является структурой данных, а представляет собой последовательность элементов, которую можно обработать.
  • .filter(number -> number > 0): Это промежуточная операция над потоком. Метод filter() принимает Predicate (функцию, возвращающую true или false) и оставляет только те элементы, для которых предикат истинен. Здесь number -> number > 0 - это лямбда-выражение, которое представляет собой компактный способ написания функции. Оно проверяет, больше ли каждое число в потоке 0.
  • .forEach(number -> System.out.println(number + " is a positive number (Stream)."));: Это терминальная операция. Терминальные операции потребляют поток и дают результат. Метод forEach() выполняет действие для каждого элемента в потоке. Здесь он выводит каждое положительное число вместе с сообщением.

Сохраните файл PositiveCheck.java.

Теперь скомпилируйте и запустите модифицированную программу в терминале:

javac PositiveCheck.java
java PositiveCheck

Вы должны увидеть тот же вывод, что и раньше, но с обновленным сообщением:

10 is a positive number (Stream).
20 is a positive number (Stream).
15 is a positive number (Stream).

Это демонстрирует, как Stream API можно использовать для достижения того же результата, что и с использованием традиционного цикла for, зачастую с более читаемым и выразительным кодом, особенно для более сложных операций.

Обработка нулей и отрицательных чисел

В предыдущих шагах мы сосредоточились на определении положительных чисел. Теперь расширим нашу программу, чтобы она также определяла нули и отрицательные числа. Это даст нам более полное представление о числах в нашем массиве.

Мы снова модифицируем файл PositiveCheck.java, чтобы включить проверку на нули и отрицательные числа, используя сначала традиционный подход с циклом for, так как условную логику с операторами if-else if-else часто легче понять.

Откройте файл PositiveCheck.java в редакторе. Замените существующий код следующим:

public class PositiveCheck {

    public static void main(String[] args) {
        // Define an array of integers
        int[] numbers = {10, -5, 20, 0, 15, -8};

        // Loop through the array
        for (int i = 0; i < numbers.length; i++) {
            // Get the current number
            int currentNumber = numbers[i];

            // Check if the number is positive, negative, or zero
            if (currentNumber > 0) {
                System.out.println(currentNumber + " is a positive number.");
            } else if (currentNumber < 0) {
                System.out.println(currentNumber + " is a negative number.");
            } else {
                System.out.println(currentNumber + " is zero.");
            }
        }
    }
}

Вот что нового:

  • else if (currentNumber < 0): Это оператор else if. Он проверяет, меньше ли currentNumber 0, но только если предыдущее условие if (currentNumber > 0) было ложным.
  • else: Это оператор else. Код внутри блока else выполняется, если ни одно из предыдущих условий if или else if не истинно. В этом случае, если число не больше 0 и не меньше 0, оно должно быть равно 0.

Сохраните файл PositiveCheck.java.

Теперь скомпилируйте и запустите модифицированную программу в терминале:

javac PositiveCheck.java
java PositiveCheck

Теперь вы должны увидеть вывод, в котором каждое число в массиве классифицируется:

10 is a positive number.
-5 is a negative number.
20 is a positive number.
0 is zero.
15 is a positive number.
-8 is a negative number.

Это демонстрирует, как использовать операторы if-else if-else для обработки нескольких условий в цикле. Это фундаментальный шаблон для принятия решений в программировании.

Вы также можете достичь аналогичных результатов, используя Stream API с более продвинутыми техниками, такими как partitioningBy или множественные операции filter, но цикл for с if-else if-else - это простой и понятный подход для этой конкретной задачи, особенно для начинающих.

Итоги

В этом практическом занятии (лабораторной работе) мы научились проверять, содержит ли массив только положительные числа на Java. Мы рассмотрели два основных метода: перебор элементов массива с использованием цикла for и применение Java Stream API.

Мы начали с создания Java - класса и использованием цикла for для проверки каждого элемента целочисленного массива. Мы реализовали условную проверку (if (currentNumber > 0)), чтобы определить и вывести положительные числа. Этот фундаментальный подход показал, как получить доступ к отдельным элементам массива и обработать их. Хотя предоставленный контент описывает только метод с использованием цикла, структура практического занятия предполагает, что в последующих шагах будут рассмотрены Stream API и обработка нулей/отрицательных чисел, что даст полное представление о различных техниках для этой распространенной задачи программирования.