Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.company;
- import java.io.FileReader;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.util.Scanner;
- public class Main {
- static String extractNums(String str) {
- return String.join("", str.split("\\D"));
- }
- static String[] makeSameLength(String num1, String num2) {
- int zerosCount = Math.abs(num1.length() - num2.length());
- for (int i = 0; i < zerosCount; i++) {
- if (num1.length() < num2.length())
- num1 = "0" + num1;
- else
- num2 = "0" + num2;
- }
- String[] arr = {num1, num2};
- return arr;
- }
- static void showSequence(String seq) {
- for(int i = 0; i < seq.length(); i++){
- System.out.print(seq.charAt(i));
- }
- System.out.println("");
- }
- static String sum(String num1, String num2) {
- String[] nums = makeSameLength(num1, num2);
- num1 = nums[0];
- num2 = nums[1];
- byte memory = 0;
- String sequense = "";
- for (int i = num1.length() - 1; i >= 0; i--) {
- byte el1 = (byte) Character.getNumericValue(num1.charAt(i));
- byte el2 = (byte) Character.getNumericValue(num2.charAt(i));
- byte result = (byte) (el1 + el2 + memory);
- byte units = (byte) (result % 10);
- if (i != 0) {
- memory = (byte) (result / 10);
- sequense = units + sequense;
- } else
- sequense = result + sequense;
- }
- return sequense;
- }
- public static void main(String[] args) {
- System.out.println("Данная программа находит последовательность, представляющую сумму двух натуральных чисел, заданных своими последовательностями\n");
- boolean notCorrect = true;
- boolean noException;
- Scanner scan = new Scanner(System.in);
- while (notCorrect) {
- noException = true;
- System.out.println("Введите путь до файла, в котором находятся последовательности чисел, либо его имя, если файл находится в одной директории с программой");
- String filePath = scan.nextLine();
- String seq1 = "";
- String seq2 = "";
- try (FileReader fr = new FileReader(filePath)) {
- Scanner frScan = new Scanner(fr);
- seq1 = extractNums(frScan.nextLine());
- seq2 = extractNums(frScan.nextLine());
- } catch (IOException err) {
- System.out.println("Произошла ошибка при чтении файла. Убедитесь, что такой файл существует, либо проверьте имя файла.");
- noException = false;
- }
- if (noException) {
- System.out.println("Числа, записанные в файле:");
- showSequence(seq1);
- showSequence(seq2);
- String sequence = sum(seq1, seq2).replaceAll("^0+", "");
- if (seq1.matches("^\\d+$") && seq2.matches(("^\\d+$"))) {
- System.out.println("Результат: " + sequence);
- try (FileWriter fw = new FileWriter("output.txt", false)) {
- fw.write("Результат: " + sequence);
- } catch (IOException err) {
- System.out.println("Произошла ошибка при попытке записи результата в файл");
- }
- System.out.println("Результат сохранен в файл output.txt");
- notCorrect = false;
- } else
- System.out.println("Файл должен состоять из последовательности натуральных чисел");
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement