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 getNumberFromSeq(String[] seq) {
- String result = "0";
- for(String el : seq) {
- el = el.trim();
- result = sum(result, el);
- }
- return result;
- }
- 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(String el : seq)
- System.out.print(el);
- 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();
- if (!filePath.contains(".txt"))
- filePath += ".txt";
- String[] seq1 = {};
- String[] seq2 = {};
- String num1 = "0";
- String num2 = "0";
- try (FileReader fr = new FileReader(filePath)) {
- Scanner frScan = new Scanner(fr);
- seq1 = frScan.nextLine().split(",");
- seq2 = frScan.nextLine().split(",");
- } catch (IOException err) {
- System.out.println("Произошла ошибка при чтении файла. Убедитесь, что такой файл существует, либо проверьте имя файла.");
- noException = false;
- }
- if (noException) {
- System.out.println("Последовательности, записанные в файле:");
- showSequence(seq1);
- showSequence(seq2);
- num1 = getNumberFromSeq(seq1);
- num2 = getNumberFromSeq(seq2);
- System.out.println("Получившиеся числа: " + num1 + " и " + num2);
- String sequence = sum(num1, num2).replaceAll("^0+", "");
- if (num1.matches("^\\d+$") && num2.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