Задачка с Hyperskill

Всем доброго времени суток.

Решаю задачки в проекте Encryption - Decryption на Hyperskill.

Дошел до stage 5, финальное задание уровня.


https://hyperskill.org/projects/46/stages/249/implement


Столкнулся с проблемой, Wrong answer in test #1.

Хотя в IDE программа работает нормально, выводит сообщение об ошибке, если наступает исключение.

Код аппликухи:


package encryptdecrypt;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileWriter;

import java.io.IOException;

import java.util.Scanner;


public class Main {


static String fileMessage(String pathOpenFile) throws FileNotFoundException {

try {

String outputMessage = "";

File file = new File(pathOpenFile);

Scanner scan = new Scanner(file, "Cp1251");

while (scan.hasNext()) {

outputMessage = outputMessage + scan.nextLine() + " ";

}

scan.close();

return outputMessage;

} catch (FileNotFoundException e) {

return null;

}

}


static void writeToFile(String pathNewFile, String message) throws IOException {

File file = new File(pathNewFile);

FileWriter fileWriter = new FileWriter(file);

fileWriter.write(message);

fileWriter.close();

}


//Дешифровка

static String dec(String inputMessage, int selectedKey) {

try {

char[] textToArray = inputMessage.toCharArray(); //Массив символов до преобразования

char[] decArray = new char[inputMessage.length()]; //Массив символов после преобразования

int[] intNumberOfChars = new int[inputMessage.length()]; //Массив с кодами символов до преобразования

int[] newIntNumberOfChars = new int[inputMessage.length()]; //Массив с кодами символов после преобразования

String newMessage;

//Заполнение массива значениями символов изначального сообщения

for (int i = 0; i < inputMessage.length(); i++) {

intNumberOfChars[i] = textToArray[i];

}

//Заполняем массив кодами со сдвигом

for (int i = 0; i < inputMessage.length(); i++) {

newIntNumberOfChars[i] = intNumberOfChars[i] - selectedKey;

}

//Преобразуем новый массив кодов в символьный массив

for (int i = 0; i < inputMessage.length(); i++) {

decArray[i] = (char) newIntNumberOfChars[i];

}

newMessage = String.valueOf(decArray);

return newMessage;

} catch (NullPointerException e) {

return null;

}

}


//Шифрование

static String enc(String inputMessage, int selectedKey) {

try {

char[] textToArray = inputMessage.toCharArray(); //Массив символов до преобразования

char[] decArray = new char[inputMessage.length()]; //Массив символов после преобразования

int[] intNumberOfChars = new int[inputMessage.length()]; //Массив с кодами символов до преобразования

int[] newIntNumberOfChars = new int[inputMessage.length()]; //Массив с кодами символов после преобразования

String newMessage;

//Заполнение массива значениями символов изначального сообщения

for (int i = 0; i < inputMessage.length(); i++) {

intNumberOfChars[i] = textToArray[i];

}

//Заполняем массив кодами со сдвигом

for (int i = 0; i < inputMessage.length(); i++) {

newIntNumberOfChars[i] = intNumberOfChars[i] + selectedKey;

}

//Преобразуем новый массив кодов в символьный массив

for (int i = 0; i < inputMessage.length(); i++) {

decArray[i] = (char) newIntNumberOfChars[i];

}

newMessage = String.valueOf(decArray);

return newMessage;

} catch (NullPointerException e) {

return null;

}

}


public static void main(String[] args) throws IOException {

int counter = 0;

int coutner2 = 0;

final String optionMode = "-mode";

final String optionData = "-data";

final String optionIn = "-in";

final String optionOut = "-out";

final String optionKey = "-key";

String finalMessage = "";

String selectedMode = "enc";

String pathOpenFile = "";

String pathNewFile = "";

String inputMessage = "";

int selectedKey = 0;


if (args.length == 0) {

System.out.println("Error");

System.exit(0);

}


//Проверяем введенные опции и присваиваем их

for (int i = 0; i < args.length; i += 2) {

if (args[i].equals(optionMode)) {

selectedMode = args[i + 1];

}

if (args[i].equals(optionData)) {

inputMessage = args[i + 1];

counter = 1;

}

if (args[i].equals(optionIn)) {

pathOpenFile = args[i + 1];

counter+=10;

}

if (args[i].equals(optionOut)) {

pathNewFile = args[i + 1];

coutner2=+15;

}

if (args[i].equals(optionKey)) {

selectedKey = Integer.parseInt(args[i + 1]);

}

}


//Проверяем наличие полей ввода. Если есть ввод с консоли, читает с консоли, игнорируя файл.

if (counter != 1 && counter != 11) {

inputMessage = fileMessage(pathOpenFile);

}


//Проверяем выбранный мод.

if (selectedMode.equals("enc")) {

finalMessage = enc(inputMessage, selectedKey);

}

if (selectedMode.equals("dec")) {

finalMessage = dec(inputMessage, selectedKey);

}


if (coutner2 == 15) {

if (finalMessage == null){

System.out.println("Error");

} else {

writeToFile(pathNewFile, finalMessage);

}

} else {

if (finalMessage == null){

System.out.println("Error");

} else {

System.out.println(finalMessage);

}

}

}

}



Можете подсказать, в какую сторону копать?

Правила сообщества

Прошу воздержаться от взаимных оскорблений.

Больше позитива, ведь программирование - это весело)

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества