Advertisement
Alyks

Untitled

Nov 3rd, 2019
293
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.09 KB | None | 0 0
  1. package com.company;
  2.  
  3. import java.io.FileReader;
  4. import java.io.FileWriter;
  5. import java.io.IOException;
  6. import java.util.Scanner;
  7.  
  8. public class Main {
  9.     static String extractNums(String str) {
  10.         return String.join("", str.split("\\D"));
  11.     }
  12.  
  13.     static String[] makeSameLength(String num1, String num2) {
  14.         int zerosCount = Math.abs(num1.length() - num2.length());
  15.         for (int i = 0; i < zerosCount; i++) {
  16.             if (num1.length() < num2.length())
  17.                 num1 = "0" + num1;
  18.             else
  19.                 num2 = "0" + num2;
  20.         }
  21.         String[] arr = {num1, num2};
  22.         return arr;
  23.     }
  24.  
  25.     static void showSequence(String seq) {
  26.         for(int i = 0; i < seq.length(); i++){
  27.             System.out.print(seq.charAt(i));
  28.         }
  29.         System.out.println("");
  30.     }
  31.  
  32.     static String sum(String num1, String num2) {
  33.         String[] nums = makeSameLength(num1, num2);
  34.         num1 = nums[0];
  35.         num2 = nums[1];
  36.         byte memory = 0;
  37.         String sequense = "";
  38.         for (int i = num1.length() - 1; i >= 0; i--) {
  39.             byte el1 = (byte) Character.getNumericValue(num1.charAt(i));
  40.             byte el2 = (byte) Character.getNumericValue(num2.charAt(i));
  41.             byte result = (byte) (el1 + el2 + memory);
  42.             byte units = (byte) (result % 10);
  43.             if (i != 0) {
  44.                 memory = (byte) (result / 10);
  45.                 sequense = units + sequense;
  46.             } else
  47.                 sequense = result + sequense;
  48.         }
  49.         return sequense;
  50.     }
  51.  
  52.     public static void main(String[] args) {
  53.         System.out.println("Данная программа находит последовательность, представляющую сумму двух натуральных чисел, заданных своими последовательностями\n");
  54.         boolean notCorrect = true;
  55.         boolean noException;
  56.         Scanner scan = new Scanner(System.in);
  57.         while (notCorrect) {
  58.             noException = true;
  59.             System.out.println("Введите путь до файла, в котором находятся последовательности чисел, либо его имя, если файл находится в одной директории с программой");
  60.             String filePath = scan.nextLine();
  61.             String seq1 = "";
  62.             String seq2 = "";
  63.             try (FileReader fr = new FileReader(filePath)) {
  64.                 Scanner frScan = new Scanner(fr);
  65.                 seq1 = extractNums(frScan.nextLine());
  66.                 seq2 = extractNums(frScan.nextLine());
  67.             } catch (IOException err) {
  68.                 System.out.println("Произошла ошибка при чтении файла. Убедитесь, что такой файл существует, либо проверьте имя файла.");
  69.                 noException = false;
  70.             }
  71.  
  72.             if (noException) {
  73.                 System.out.println("Числа, записанные в файле:");
  74.                 showSequence(seq1);
  75.                 showSequence(seq2);
  76.                 String sequence = sum(seq1, seq2).replaceAll("^0+", "");
  77.                 if (seq1.matches("^\\d+$") && seq2.matches(("^\\d+$"))) {
  78.                     System.out.println("Результат: " + sequence);
  79.                     try (FileWriter fw = new FileWriter("output.txt", false)) {
  80.                         fw.write("Результат: " + sequence);
  81.                     } catch (IOException err) {
  82.                         System.out.println("Произошла ошибка при попытке записи результата в файл");
  83.                     }
  84.                     System.out.println("Результат сохранен в файл output.txt");
  85.                     notCorrect = false;
  86.                 } else
  87.                     System.out.println("Файл должен состоять из последовательности натуральных чисел");
  88.             }
  89.         }
  90.     }
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement