Для моего задания мне нужно написать код для кодирования / декодирования сообщения. Я близок к концу, когда начал обнаруживать, что всякий раз, когда я набираю сообщение, программа заменяет только определенные символы. Перевод довольно прост: для кодирования вы меняете a на противоположную букву алфавита, поэтому z. b к y, c к x, d к w, et c. Назначение выглядит следующим образом:
Этот проект включает в себя написание программы, которая кодирует и декодирует сообщения. Программа должна предлагать пользователю выбрать, следует ли кодировать или декодировать сообщение, а затем предлагать пользователю ввести сообщение. Пробел используется для разделения каждого слова в сообщении, а точка (.) Используется для обозначения конца предложения. Для кодирования и декодирования входящего сообщения необходимо использовать отдельные методы. Схема кодирования очень проста: кодовый эквивалент буквы A - Z, для B - Y,… и для Z - A, как показано в следующей таблице. Например, если пользователь выбирает кодирование такого предложения, как hello world, закодированным предложением будет svool dliow.
Вот мой код:
import java.util.Scanner ;
public class Project1
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in) ;
//prompt user to decide to encode or decode
System.out.print("Please enter 1 to encode, or 2 to decode the message: ") ;
int promptNumber = input.nextInt() ;
if (promptNumber == 1) {
System.out.println("You have choosen to encode the message.") ;
System.out.print("Please enter the message you wish to be encoded: ") ;
String encode = input.next();
encode += input.nextLine();
encode = encodeMessage(encode) ;
System.out.println("Your encoded message is now: " + encode) ;
}
else if (promptNumber == 2) {
System.out.println("You have choosen to decode the message.") ;
System.out.print("Please enter the message you wish to decode: ") ;
String decode = input.next();
decode += input.nextLine();
decode = decodeMessage(decode) ;
System.out.println("Your encoded message is now: " + decode) ;
}
else
System.out.println("Please enter a value of 1 or 2.") ;
}
//method for encoded calculation
public static String encodeMessage(String message)
{
String str = message ;
for (int i = 0; i < str.length(); i++) {
switch (str.charAt(i)) {
case 'a': str = str.replace('a', 'z') ; break ;
case 'b': str = str.replace('b', 'y') ; break ;
case 'c': str = str.replace('c', 'x') ; break ;
case 'd': str = str.replace('d', 'w') ; break ;
case 'e': str = str.replace('e', 'v') ; break ;
case 'f': str = str.replace('f', 'u') ; break ;
case 'g': str = str.replace('g', 't') ; break ;
case 'h': str = str.replace('h', 's') ; break ;
case 'i': str = str.replace('i', 'r') ; break ;
case 'j': str = str.replace('j', 'q') ; break ;
case 'k': str = str.replace('k', 'p') ; break ;
case 'l': str = str.replace('l', 'o') ; break ;
case 'm': str = str.replace('m', 'n') ; break ;
case 'n': str = str.replace('n', 'm') ; break ;
case 'o': str = str.replace('o', 'l') ; break ;
case 'p': str = str.replace('p', 'k') ; break ;
case 'q': str = str.replace('q', 'j') ; break ;
case 'r': str = str.replace('r', 'i') ; break ;
case 's': str = str.replace('s', 'h') ; break ;
case 't': str = str.replace('t', 'g') ; break ;
case 'u': str = str.replace('u', 'f') ; break ;
case 'v': str = str.replace('v', 'e') ; break ;
case 'w': str = str.replace('w', 'd') ; break ;
case 'x': str = str.replace('x', 'c') ; break ;
case 'y': str = str.replace('y', 'b') ; break ;
case 'z': str = str.replace('z', 'a') ; break ;
case ' ': continue ;
case '.': break ;
}
}
return str ;
}
//method for decoded calculation
public static String decodeMessage(String message)
{
String str = message ;
for (int i = 0; i < str.length(); i++) {
switch (str.charAt(i)) {
case 'a': str = str.replace('a', 'z') ; break ;
case 'b': str = str.replace('b', 'y') ; break ; //Error
case 'c': str = str.replace('c', 'x') ; break ;
case 'd': str = str.replace('d', 'w') ; break ; //Error
case 'e': str = str.replace('e', 'v') ; break ;
case 'f': str = str.replace('f', 'u') ; break ;
case 'g': str = str.replace('g', 't') ; break ;
case 'h': str = str.replace('h', 's') ; break ;
case 'i': str = str.replace('i', 'r') ; break ;
case 'j': str = str.replace('j', 'q') ; break ;
case 'k': str = str.replace('k', 'p') ; break ;
case 'l': str = str.replace('l', 'o') ; break ; //Error
case 'm': str = str.replace('m', 'n') ; break ;
case 'n': str = str.replace('n', 'm') ; break ;
case 'o': str = str.replace('o', 'l') ; break ;
case 'p': str = str.replace('p', 'k') ; break ;
case 'q': str = str.replace('q', 'j') ; break ;
case 'r': str = str.replace('r', 'i') ; break ;
case 's': str = str.replace('s', 'h') ; break ;
case 't': str = str.replace('t', 'g') ; break ;
case 'u': str = str.replace('u', 'f') ; break ;
case 'v': str = str.replace('v', 'e') ; break ;
case 'w': str = str.replace('w', 'd') ; break ;
case 'x': str = str.replace('x', 'c') ; break ;
case 'y': str = str.replace('y', 'b') ; break ; //Error
case 'z': str = str.replace('z', 'a') ; break ;
case ' ': continue ;
case '.': break ;
}
}
return str ;
}
}