Я пытаюсь написать программу цезарного кода, которая декодирует и кодирует код. Это займет файл и вернет декодированный или закодированный файл.Код Цезаря в Java
Вот что я написал:
import java.io.*;
import java.util.Scanner;
public class cc
{
public static void main(String[] args) throws FileNotFoundException, UnsupportedEncodingException
{
System.out.println("Welcome to CaesarCipher");
System.out.print("Enter 1 to encipher, or 2 to decipher (-1 to exit) ");
Scanner scan = new Scanner(System.in);
int answer = scan.nextInt();
System.out.print("What non-negative shift should I use? ");
Scanner scan1 = new Scanner(System.in);
int i = scan1.nextInt();
System.out.print("What is the input file name? ");
Scanner scan2 = new Scanner(System.in);
String file = scan2.nextLine();
System.out.print("What is the output file name? ");
Scanner scan3 = new Scanner(System.in);
String savefile = scan3.nextLine();
if (answer == 1)
{
encode(file, savefile, i);
} else if (answer == 2)
{
decode(file, savefile, i);
} else if (answer == -1)
{
System.out.println("See you later, aligator!");;
}
System.out.println("DONE!");
}
public static void encode(String file, String savefile, int i) throws FileNotFoundException, UnsupportedEncodingException
{
File f2 = new File(savefile);
PrintWriter writer = new PrintWriter(f2, "UTF-8");
i = i % 26 + 26;
File f = new File(file);
Scanner input = new Scanner(new FileInputStream(f));
StringBuilder encoded = new StringBuilder();
for (char y : file.toCharArray())
{
if (Character.isLetter(y))
{
if (Character.isUpperCase(y))
{
encoded.append((char) ('A' + (y - 'A' + y) % 26));
} else
{
encoded.append((char) ('a' + (y - 'a' + y) % 26));
}
} else
{
encoded.append(y);
}
writer.print(encoded.toString());
}
writer.close();
}
public static void decode(String file, String savefile, int i) throws FileNotFoundException, UnsupportedEncodingException
{
encode(file, savefile, 26-i);
}
}
Проблема в том, однако, что выходной файл всегда пуст. Что не так с моим кодом?
[EDIT]
Привет, я добавил writer.close();
, но я все еще есть проблемы.
Когда вход cows are mowing everyone is happy
во входном файле со сдвигом 2 он дает мне выход
**hhbhbphbpphbppvhbppv.hbppv.fhbppv.fnhbppv.fnf**
Правильно ли это?
Thanks
вызова 'writer.close()' после 'writer.print()' – BoDidely
\t @BoDidely Привет, я отредактировал мой вопрос. Не могли бы вы рассказать об этом. Thanks –
Попытайтесь не перемещать сообщения цели при задании вопроса. Если вы продолжаете изменять вопрос, ответы становятся неактуальными, а способ работы сайта несколько разваливается. – tnw