kiomaru

Пикабушник
1229 рейтинг 0 подписчиков 27 подписок 3 поста 0 в горячем
Награды:
5 лет на Пикабу

Задачка с 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);

}

}

}

}



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

Показать полностью
7

Взыскание с карты после снятия ареста

Добрый день, пикабушники.

Возникла такая история.

Имеется доля в квартире, сам там уже давно не живу.

Остальные собственники допустили задолженность по ЖКХ.

Появилась запись на ФССП, ошибка в месте рождения, но в остальном все вроде верно.

Сбербанк наложил арест на карту и взыскание.

Связались с собственниками, они погасили все это дело, разбирались с приставом.

Сегодня (арест снимался с карты!) внезапно арест снова появился и списали все в ноль на карте.

Лига юристов, прошу о помощи - какой порядок действий в данном случае?

Без рейтинга, спасибо!

Помогите найти книгу.

Привет пикабушники.
когда то читал книгу российского фантаста, из основного помню только про то, как у главного героя (и не только) была возможность прятать предметы "на холод".
Эдакое иное измерение, куда силой мысли и руки могли прятать предметы и доставать по желанию.
Заранее спасибо)

Отличная работа, все прочитано!

Темы

Политика

Теги

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

Сообщества

18+

Теги

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

Сообщества

Игры

Теги

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

Сообщества

Юмор

Теги

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

Сообщества

Отношения

Теги

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

Сообщества

Здоровье

Теги

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

Сообщества

Путешествия

Теги

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

Сообщества

Спорт

Теги

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

Сообщества

Хобби

Теги

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

Сообщества

Сервис

Теги

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

Сообщества

Природа

Теги

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

Сообщества

Бизнес

Теги

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

Сообщества

Транспорт

Теги

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

Сообщества

Общение

Теги

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

Сообщества

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

Теги

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

Сообщества

Наука

Теги

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

Сообщества

IT

Теги

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

Сообщества

Животные

Теги

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

Сообщества

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

Теги

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

Сообщества

Экономика

Теги

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

Сообщества

Кулинария

Теги

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

Сообщества

История

Теги

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

Сообщества