Введение
В этом лабораторном занятии (LabEx) вы научитесь проверять, содержит ли массив только положительные числа на Java. Мы рассмотрим различные подходы для достижения этой цели, начиная с основного метода, который использует цикл для перебора элементов массива и проверки каждого элемента по отдельности.
После базового метода с использованием цикла мы углубимся в использование Java Stream API, более современного и часто более компактного способа обработки коллекций. Наконец, мы обсудим, как обрабатывать нули и отрицательные числа в контексте определения, содержит ли массив только положительные значения. В этом лабораторном занятии вы получите практические навыки работы с массивами и условной логикой на Java.
Перебор массива для проверки на положительные числа
На этом этапе мы научимся перебирать массив чисел на 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. Он проверяет, больше лиcurrentNumber0.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. Он проверяет, меньше лиcurrentNumber0, но только если предыдущее условие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 и обработка нулей/отрицательных чисел, что даст полное представление о различных техниках для этой распространенной задачи программирования.



