Skip to content

Практические задания по вводу-выводу в Java

Задание 1: Вывод строк в обратном порядке

import java.util.Scanner;

public class ReverseStrings {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String[] strings = new String[3];

        // Ввод строк
        for (int i = 0; i < 3; i++) {
            System.out.print("Введите строку " + (i + 1) + ": ");
            strings[i] = scanner.nextLine();
        }

        // Вывод в обратном порядке
        System.out.println("Строки в обратном порядке:");
        for (int i = 2; i >= 0; i--) {
            System.out.println(strings[i]);
        }

        scanner.close();
    }
}

Задание 2: Чтение слова из 5 букв с помощью System.in

import java.io.IOException;

public class ReadFiveLetterWord {
    public static void main(String[] args) throws IOException {
        byte[] buffer = new byte[5];
        System.out.print("Введите слово из 5 букв: ");
        System.in.read(buffer, 0, 5);
        String word = new String(buffer);
        System.out.println("Вы ввели: " + word);
    }
}

Задание 3: Чтение слова до пробела (макс. 10 символов) с помощью System.in

import java.io.IOException;

public class ReadWordUntilSpace {
    public static void main(String[] args) throws IOException {
        byte[] buffer = new byte[10];
        System.out.print("Введите слово (до 10 символов): ");
        int bytesRead = System.in.read(buffer);
        String word = new String(buffer, 0, bytesRead).split("\\s")[0];
        System.out.println("Вы ввели: " + word);
    }
}

Задание 4: Чтение из файлов и запись буквы

import java.io.*;
import java.util.Scanner;

public class FileChainReading {
    public static void main(String[] args) throws IOException {
        // Чтение имени второго файла из первого файла
        FileInputStream fis1 = new FileInputStream("file1.txt");
        Scanner scanner = new Scanner(fis1);
        String secondFileName = scanner.nextLine();
        scanner.close();

        // Чтение имени третьего файла из второго файла
        FileInputStream fis2 = new FileInputStream(secondFileName);
        scanner = new Scanner(fis2);
        String thirdFileName = scanner.nextLine();
        scanner.close();

        // Чтение буквы от пользователя
        System.out.print("Введите букву: ");
        int letter = System.in.read();

        // Запись буквы в третий файл
        FileOutputStream fos = new FileOutputStream(thirdFileName);
        fos.write(letter);
        fos.close();

        System.out.println("Буква успешно записана в файл " + thirdFileName);
    }
}

Задание 5: Чтение целого числа до первой нецифры

import java.io.IOException;

public class ReadIntegerUntilNonDigit {
    public static void main(String[] args) throws IOException {
        System.out.print("Введите число (до 7 символов): ");
        StringBuilder number = new StringBuilder();
        for (int i = 0; i < 7; i++) {
            int ch = System.in.read();
            if (ch >= '0' && ch <= '9') {
                number.append((char) ch);
            } else {
                break;
            }
        }
        System.out.println("Считанное число: " + number);
    }
}

Задание 6: Чтение дробного числа

import java.io.IOException;

public class ReadFloatNumber {
    public static void main(String[] args) throws IOException {
        System.out.print("Введите дробное число: ");
        StringBuilder number = new StringBuilder();
        boolean dotFound = false;
        for (int i = 0; i < 10; i++) {
            int ch = System.in.read();
            if ((ch >= '0' && ch <= '9') || (ch == '.' && !dotFound)) {
                number.append((char) ch);
                if (ch == '.') {
                    dotFound = true;
                }
            } else {
                break;
            }
        }
        System.out.println("Считанное число: " + number);
    }
}

Задание 7: Вывод строк с восклицательным знаком в stderr

import java.util.Scanner;

public class ExclamationToStderr {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        for (int i = 0; i < 10; i++) {
            System.out.print("Введите строку " + (i + 1) + ": ");
            String line = scanner.nextLine();
            if (line.contains("!")) {
                System.err.println(line);
            }
        }
        scanner.close();
    }
}

Задание 8: Вывод строк в stdout и stderr в зависимости от длины

import java.util.Scanner;

public class StringLengthSorting {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String[] lines = new String[10];

        // Ввод строк
        for (int i = 0; i < 10; i++) {
            System.out.print("Введите строку " + (i + 1) + ": ");
            lines[i] = scanner.nextLine();
        }

        System.out.print("Введите максимальную длину (max): ");
        int max = scanner.nextInt();

        // Вывод строк
        for (String line : lines) {
            if (line.length() < max) {
                System.out.println(line);
            } else {
                System.err.println(line.substring(0, max));
            }
        }

        scanner.close();
    }
}

Эти задания охватывают различные аспекты ввода-вывода в Java, включая: - Использование Scanner для чтения ввода пользователя - Прямое использование System.in для чтения байтов - Работу с файлами (FileInputStream, FileOutputStream) - Обработку строк и чисел - Использование System.out и System.err для вывода

При выполнении этих заданий важно обратить внимание на обработку исключений и закрытие ресурсов (Scanner, потоки ввода-вывода) после использования.

пример

https://gitlab.com/synergy9980417/tema1_urok1_9