97d ago

Условия, круги, scanner

knowt logo

Условия, круги, scanner

1.

Использование Scanner для ввода данных

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


1.1. Объяснение

Класс Scanner из пакета java.util используется для считывания данных из различных источников, включая консоль. Представь это как инструмент, который "слушает" ввод пользователя и позволяет программе его обработать. Чтобы использовать Scanner, необходимо сначала импортировать его.

Объяснение работы Scanner
  • Создание объекта Scanner: При создании объекта Scanner, мы указываем источник данных, в данном случае System.in (консольный ввод).

  • Чтение данных: Scanner может считывать данные различного типа, включая строки, числа, логические значения и т. д.


1.2. Примеры использования

Считывание строки

Считывание имени пользователя для приветствия:

System.out.print("Введите ваше имя: ");
String name = scanner.nextLine();
System.out.println("Привет, " + name + "!");
  • Этот пример показывает, как можно получить строку от пользователя и использовать её для составления приветствия.

Получение числового ввода

Получение числового ввода, например, возраста, для проверки условий:

System.out.print("Введите ваш возраст: ");
int age = scanner.nextInt();
System.out.println("Ваш возраст: " + age);
  • Здесь мы запрашиваем у пользователя его возраст и выводим это значение. Если пользователь введёт строку вместо числа, произойдет ошибка.

Ввод значений для математических вычислений
System.out.print("Введите первое число: ");
double num1 = scanner.nextDouble();
System.out.print("Введите второе число: ");
double num2 = scanner.nextDouble();
double sum = num1 + num2;
System.out.println("Сумма: " + sum);
  • В этом примере мы считываем два числа с плавающей точкой и выводим их сумму.


1.3. Синтаксис и примеры

Синтаксис создания Scanner
import java.util.Scanner;

public class InputExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in); // Создаём объект Scanner
        // Считывание строки
        System.out.print("Введите ваше имя: ");
        String name = scanner.nextLine();
        System.out.println("Привет, " + name + "!");
        // Считывание числа
        System.out.print("Введите ваш возраст: ");
        int age = scanner.nextInt();
        System.out.println("Ваш возраст: " + age);
        scanner.close(); // Закрываем Scanner
    }
}
  • В этом коде мы создаём объект Scanner, запрашиваем имя и возраст, и выводим их на экран. Не забудьте закрыть Scanner после его использования, чтобы освободить ресурсы.


1.4. Отличия, плюсы и минусы

Плюсы
  • Удобен для работы с различными типами данных (строки, числа, символы).

  • Прост в использовании и интеграции в программы.

Минусы
  • Требует обработки ошибок, особенно если пользователь вводит данные неправильного типа. Например, если ожидается число, а введена строка, программа выведет ошибку.

  • Необходимость в дополнительной обработке ввода может усложнять код. Чтобы избежать ошибок, можно использовать try-catch блоки для обработки исключений.

Пример обработки ошибок
try {
    System.out.print("Введите ваш возраст: ");
    int age = scanner.nextInt();
    System.out.println("Ваш возраст: " + age);
} catch (InputMismatchException e) {
    System.out.println("Ошибка: необходимо ввести число!");
}
  • В этом примере мы обрабатываем исключение InputMismatchException, которое возникает, если пользователь вводит некорректный тип данных. Мы можем информировать пользователя об ошибке, вместо того чтобы завершать программу с исключением.


2. Обработка различных типов данных

2.1. Объяснение

Класс Scanner предоставляет методы для ввода различных типов данных, что делает его универсальным инструментом для взаимодействия с пользователем.

  • nextLine(): используется для считывания строк. Например, если вы хотите получить имя пользователя, вы можете использовать этот метод.

  • nextInt(): применяется для ввода целых чисел. Полезно для случаев, когда требуется ввод количества, возраста и других подобных значений.

  • nextDouble(): используется для получения чисел с плавающей запятой. Это полезно для выполнения математических операций с дробными числами.

  • nextBoolean(): применяется для считывания логических значений (true или false). Это удобно, когда программа требует принятия двоичного решения (например, согласие или отказ).

2.2. Примеры использования
  1. Ввод целых чисел для расчётов: Например, программа может запрашивать у пользователя его возраст и использовать эту информацию для выполнения логики, связанной с возрастом.

    System.out.print("Введите ваш возраст: ");
    int age = scanner.nextInt();
    System.out.println("Ваш возраст: " + age);
  2. Считывание логических значений для принятия решений: Программа может запрашивать у пользователя согласие на что-то, например:

    System.out.print("Вы согласны с условиями? (true/false): ");
    boolean consent = scanner.nextBoolean();
    if (consent) {
        System.out.println("Спасибо за согласие!");
    } else {
        System.out.println("Вы не согласны.");
    }
2.3. Синтаксис и примеры
import java.util.Scanner;

public class DataTypesExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // Получение числа с плавающей точкой
        System.out.print("Введите число с плавающей точкой: ");
        double number = scanner.nextDouble();
        System.out.println("Вы ввели: " + number);
        
        // Получение логического ответа
        System.out.print("Вы согласны? (true/false): ");
        boolean answer = scanner.nextBoolean();
        System.out.println("Ваш ответ: " + answer);
        
        // Закрываем Scanner для освобождения ресурсов
        scanner.close();
    }
}

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


Условные конструкции

Условные конструкции позволяют программе принимать решения в зависимости от условий. Это основа управления потоком программы.


3. Условия if-else

3.1. Объяснениеif-else используется для проверки условия. Если условие истинно (true), выполняется один блок кода, иначе — другой. Это позволяет программе принимать решения и выполнять разные действия в зависимости от заданных условий.Представьте это как выбор пути в зависимости от ситуации: при выполнении какого-либо условия, программа будет действовать определенным образом.

3.2. Примеры использования

  • Проверка возраста пользователя для доступа к содержимому.

  • Определение, является ли число чётным или нечётным.

  • Проверка наличия товара на складе перед выполнением покупки.

    // Проверка доступа к контенту
    int age = 20;  
    if (age >= 18) {  
        System.out.println("Доступ разрешён!");  
    } else {  
        System.out.println("Доступ запрещён.");  
    }

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

  • Определение чётности числа

    // Проверка, является ли число чётным или нечётным
    int number = 7;  
    if (number % 2 == 0) {  
        System.out.println(number + " - чётное число.");  
    } else {  
        System.out.println(number + " - нечётное число.");  
    }

    В этом примере проверяется остаток от деления на 2, чтобы выяснить, чётное или нечётное данное число.

3.3. Синтаксис и примеры

public class IfElseExample {
    public static void main(String[] args) {
        int age = 18;  
        if (age >= 18) {  
            System.out.println("Доступ разрешён!");  
        } else {  
            System.out.println("Доступ запрещён.");  
        }
    }
}

В этом коде мы создаём переменную age и проверяем, больше или равно ли она 18. В зависимости от результата, программа либо разрешает доступ, либо сообщает о запрете доступа.

Дополнительные примеры:

  • Пример с проверкой температуры:

int temperature = 30;  
if (temperature > 25) {  
    System.out.println("На улице жарко.");  
} else {  
    System.out.println("На улице не жарко.");  
}

Этот код проверяет, жарко ли на улице, и выводит соответствующее сообщение.

  • Пример со скидкой в магазине:

int purchaseAmount = 200;  
if (purchaseAmount > 100) {  
    System.out.println("Вы получили 10% скидку!");  
} else {  
    System.out.println("Скидка не предназначена для вас.");  
}

Здесь проверяется сумма покупки, и если она превышает 100, пользователю предоставляется скидка.

  • Некоторый код, использующий операторы if-else:

String day = "Суббота";  
if (day.equals("Суббота")) {  
    System.out.println("Сегодня выходной!");  
} else {  
    System.out.println("Рабочий день.");  
}

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


4. Условия switch-case

4.1. Объяснение

switch-case используется для выбора из нескольких возможных вариантов. Это похоже на меню: пользователь делает выбор, и программа выполняет соответствующий блок кода.

4.2. Примеры использования
  • Реализация простого калькулятора.

  • Определение дня недели по номеру.

4.3. Синтаксис и примеры
public class SwitchCaseExample {
    public static void main(String[] args) {
        int day = 3;
        switch (day) {
            case 1:
                System.out.println("Понедельник");
                break;
            case 2:
                System.out.println("Вторник");
                break;
            case 3:
                System.out.println("Среда");
                break;
            default:
                System.out.println("Неверный день");
        }
    }
}

Циклы

Циклы позволяют повторять выполнение блока кода, пока выполняется определённое условие. Они полезны для автоматизации повторяющихся операций. В конце блока мы можем изменять изначальный Input чтобы цикл делал не все с одними и теми же данным. Например в for мы изменяем обычно индекс в цикле, чтобы пройтись по элементам массива или коллекции, что позволяет нам выполнять операции над каждым элементом последовательно. А также в while цикле условие проверяется перед каждой итерацией, что дает возможность выполнять код до тех пор, пока условие истинно, что может быть полезно в ситуациях, когда количество повторений заранее неизвестно условие так же изменяется в в блоке чтобы оно стало когда нибудь true.

Суть: изменяется Input, Input используется


5. Цикл for

5.1. Объяснение

Цикл for используется, когда известно количество итераций. Это похоже на счётчик, который считает от начального значения до конечного. В этом цикле можно легко управлять шагом счётчика, что позволяет изменять количество итераций в зависимости от условий задачи.

5.2. Примеры использования
  • Перебор элементов массива.

  • Вывод таблицы умножения.

5.3. Синтаксис и примеры
public class ForLoopExample {
    public static void main(String[] args) {
        for (int i = 1; i <= 5; i++) {
            System.out.println("Итерация: " + i);
        }
    }
}

6. Цикл while

6.1. Объяснение

while используется, когда количество итераций заранее неизвестно. Код будет выполняться, пока условие остаётся истинным.

6.2. Примеры использования
  • Проверка пользовательского ввода, пока он не корректен.

  • Подсчёт, пока условие не станет ложным.

6.3. Синтаксис и примеры
public class WhileLoopExample {
    public static void main(String[] args) {
        int count = 0;
        while (count < 5) {
            System.out.println("Счётчик: " + count);
            count++;
        }
    }
}

7. Цикл do-while

7.1. Объяснение

do-while похож на while, но с одной важной разницей: код выполняется хотя бы один раз, даже если условие сразу ложно.

7.2. Примеры использования
  • Повторение операции, пока пользователь не введёт правильное значение.

  • Меню выбора с повторением.

7.3. Синтаксис и примеры
public class DoWhileExample {
    public static void main(String[] args) {
        int count = 0;
        do {
            System.out.println("Счётчик: " + count);
            count++;
        } while (count < 5);
    }
}

8. Управление циклом (break, continue)

8.1 Объяснение

break используется для немедленного выхода из цикла, даже если условие ещё выполняется. Когда программа встречает оператор break, выполнение цикла прекращается, и управление переходит к следующему коду после цикла. Это полезно в случаях, когда нужно остановить цикл по определённому условию, например, когда искомый элемент найден.continue пропускает оставшуюся часть текущей итерации и переходит к следующей. Это позволяет пропустить некоторые шаги в цикле, сохранив выполнение самого цикла. Например, он может быть полезен для пропуска чётных чисел при переборе всех чисел в диапазоне.

continue - перепригиывает определенное значение

break - заканчвает итерацию и переходит на остальной код (можно задать условие)

8.2. Примеры использования

Использование break для прерывания цикла Предположим, у вас есть массив чисел, и вы ищете определённое число. Когда это число найдено, вы хотите прекратить перебор. Вот как это можно сделать:

int[] numbers = {1, 2, 3, 4, 5};
int target = 3;
for (int number : numbers) {
    if (number == target) {
        System.out.println("Найдено: " + number);
        break; // Выход из цикла
    }
}

В данном коде, когда number равен 3, программа выводит сообщение и выходит из цикла.

Использование continue для пропуска значений Предположим, вам нужно напечатать все нечётные числа от 1 до 10. Вы можете использовать continue, чтобы пропустить все чётные числа:

for (int i = 1; i <= 10; i++) {
    if (i % 2 == 0) {
        continue; // Пропускаем чётные числа
    }
    System.out.println(i); // Будет выведено только нечётное число
}

В этом коде, когда i чётное, оператор continue пропускает оставшуюся часть текущей итерации и переходит к следующей, тем самым избегая вывода чётных чисел.

8.3. Синтаксис и примеры
public class LoopControlExample {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++) {
            if (i == 5) {
                break; // Выход из цикла при достижении 5
            }
            System.out.println(i);
        }
        for (int i = 1; i <= 10; i++) {
            if (i % 2 == 0) {
                continue; // Пропускаем чётные числа
            }
            System.out.println(i);
        }
    }
}