Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Scanner;
- import java.io.*;
- public class Main {
- private static final Scanner scanner = new Scanner(System.in);
- public static int countNumbersAmount(String str) {
- int i;
- int num;
- int j;
- i = 1;
- num = 0;
- while(i < str.length()) {
- j =0;
- if((str.charAt(i) >= '0') && (str.charAt(i) <= '9')) {
- num++;
- j = i + 1;
- while((str.charAt(j) >= '0') && (str.charAt(j) <= '9')) {
- j++;
- }
- i = j;
- }
- else {
- i++;
- }
- }
- return num;
- }
- public static int[] addNumbersInArray(String str, int amount) {
- int[] arr = new int[amount];
- int i, j, index, number, multiplier;
- i = 0;
- index = -1;
- while(i < str.length()) {
- number = 0;
- j = 0;
- if((str.charAt(i) >= '0') && (str.charAt(i) <= '9')) {
- index++;
- j = i + 1;
- number = Character.getNumericValue(str.charAt(i));
- multiplier = 10;
- while((str.charAt(j) >= '0') && (str.charAt(j) <= '9')) {
- number = number * 10 + Character.getNumericValue(str.charAt(j));
- j++;
- multiplier = multiplier * 10;
- }
- arr[index] = number;
- i = j;
- }
- else {
- i++;
- }
- }
- return arr;
- }
- public static void main (String[] args) {
- boolean isFromFile;
- String str;
- int amount;
- int[] numbers;
- isFromFile = false;
- outputTask();
- isFromFile = chooseInput();
- str = inputString(isFromFile);
- amount = countNumbersAmount(str);
- numbers = addNumbersInArray(str, amount);
- outputAnswer(numbers);
- scanner.close();
- }
- public static String outputPath() {
- String path;
- boolean isIncorrect;
- do {
- isIncorrect = false;
- System.out.println("\nВведите путь к файлу для вывода: ");
- System.out.println();
- path = scanner.nextLine();
- File file = new File(path);
- if (!file.exists()) {
- System.out.println("По указанном пути файл не найден.");
- isIncorrect = true;
- } else if (!getExtension(path).equals("txt")) {
- System.err.println("Ошибка, неправильный тип файла!");
- isIncorrect = true;
- }
- } while (isIncorrect);
- return path;
- }
- public static void outputAnswerInFile(int[] arr) {
- String path;
- boolean isIncorrect;
- path = outputPath();
- do {
- isIncorrect = false;
- try (FileWriter writer = new FileWriter(path, true)) {
- if(arr.length == 0) {
- writer.write("В строке не были встречены числа и цифры!");
- }
- else {
- writer.write("Числа, встреченные в строе: ");
- for(int i = 0; i < arr.length; i++) {
- writer.write(arr[i] + ' ');
- }
- }
- } catch (IOException ioException) {
- System.err.println("Ошибка при записи в файл");
- isIncorrect = true;
- }
- } while (isIncorrect);
- System.out.println("Данные записаны в файл.");
- }
- public static void outputAnswer(int[] arr) {
- if(arr.length == 0) {
- System.out.println("В строке не были встречены числа и цифры!");
- }
- else {
- System.out.print("Числа, встреченные в строе: ");
- for(int i = 0; i < arr.length; i++) {
- System.out.print(arr[i] + " " );
- }
- }
- outputAnswerInFile(arr);
- }
- public static void outputTask() {
- System.out.println("Данная программа записывает в массив встреченные в строке числа.");
- }
- public static boolean chooseInput() {
- int num;
- boolean isNotCorrect;
- num = 0;
- do {
- isNotCorrect = false;
- System.out.println("Выберите, откуда будут вводиться данные: 0, если с консоли; 1, если с файла:");
- try {
- num = Integer.parseInt(scanner.nextLine());
- } catch(NumberFormatException exception) {
- isNotCorrect = true;
- }
- if(isNotCorrect || ((num != 0) && (num != 1))) {
- isNotCorrect = true;
- System.out.println("Ошибка ввода! Повторите попытку.");
- }
- } while(isNotCorrect);
- return (num == 1);
- }
- public static String inputString(boolean isFromFile) {
- String str;
- str = "";
- if(isFromFile) {
- str = inputFromFile(str);
- }
- else {
- str = inputFromConsole(str);
- }
- return str;
- }
- public static String inputFromFile(String str) {
- String path;
- boolean isCorrect;
- path = pathChoice();
- str = "";
- System.out.println("Ввод строки...");
- try (BufferedReader reader = new BufferedReader(new FileReader(path))) {
- str = (reader.readLine());
- } catch (IOException ioException) {
- System.err.println("Неверный ввод данных! Измените входные данные и перезапустите программу.");
- }
- isCorrect = false;
- for(int i = 0; i < str.length(); i++) {
- if(str.charAt(i) != ' ') {
- isCorrect = true;
- }
- }
- if(!isCorrect || (str.length() < 1)) {
- System.out.println("Ошибка ввода! Введите строку с клавиатур.");
- str = inputFromConsole(str);
- }
- return str;
- }
- public static String inputFromConsole(String str) {
- boolean isNotCorrect;
- str = "";
- do {
- isNotCorrect = true;
- System.out.println("Введите строку:");
- str = scanner.nextLine();
- for(int i = 0; i < str.length(); i++) {
- if(str.charAt(i) != ' ') {
- isNotCorrect = false;
- }
- }
- if(isNotCorrect || (str.length() < 1)) {
- System.out.println("Ошибка ввода! Повторите попытку.");
- isNotCorrect = true;
- }
- } while(isNotCorrect);
- return str;
- }
- public static String pathChoice() {
- String path;
- boolean isIncorrect;
- do {
- isIncorrect = false;
- System.out.println("Введите путь к файлу: ");
- path = scanner.nextLine();
- File file = new File(path);
- if (!file.exists()) {
- System.out.println("По указанном пути файл не найден.");
- isIncorrect = true;
- } else if (!getExtension(path).equals("txt")) {
- System.err.println("Ошибка, неправильный тип файла!");
- isIncorrect = true;
- }
- } while (isIncorrect);
- return path;
- }
- public static String getExtension(String path) {
- int pos = path.lastIndexOf('.');
- if (pos <= 0) {
- return "";
- }
- return path.substring(pos + 1);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement