Я использую шифр della porta, и он работает почти идеально, единственная проблема, с которой я сталкиваюсь, - это наличие пробелов в моем сообщении. Когда в моем сообщении нет пробелов, код просто преобразует его через шифр. Есть ли способ заставить код игнорировать пробелы в сообщении и переходить к следующему символу?
package DellaPorta2;
import java.util.Scanner;
public class DellaPorta {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter your message: ");
String message = input.nextLine();
char[] messageArray = message.trim().toLowerCase().toCharArray();
System.out.print("Enter your keyword: ");
String key = input.nextLine();
char[] keyArray = key.toLowerCase().replaceAll(" ", "").toCharArray();
String convertedMessage = String.valueOf(encryptMessage(messageArray, keyArray));
System.out.println();
System.out.println(getKeyString(keyArray).toUpperCase());
System.out.println(message.toUpperCase());
System.out.println(convertedMessage.toUpperCase());
}
public static char[] encryptMessage(char[] messageArray, char[] keyArray) {
final char DellaPortaArray[][] = { {'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm' },
{'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'n', 'm', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l' },
{'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'n', 'o', 'l', 'm', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k' },
{'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'n', 'o', 'p', 'k', 'l', 'm', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j' },
{'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'n', 'o', 'p', 'q', 'j', 'k', 'l', 'm', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i' },
{'s', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'n', 'o', 'p', 'q', 'r', 'i', 'j', 'k', 'l', 'm', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h' },
{'t', 'u', 'v', 'w', 'x', 'y', 'z', 'n', 'o', 'p', 'q', 'r', 's', 'h', 'i', 'j', 'k', 'l', 'm', 'a', 'b', 'c', 'd', 'e', 'f', 'g' },
{'u', 'v', 'w', 'x', 'y', 'z', 'n', 'o', 'p', 'q', 'r', 's', 't', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'a', 'b', 'c', 'd', 'e', 'f' },
{'v', 'w', 'x', 'y', 'z', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'a', 'b', 'c', 'd', 'e' },
{'w', 'x', 'y', 'z', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'a', 'b', 'c', 'd' },
{'x', 'y', 'z', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'a', 'b', 'c' },
{'y', 'z', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'a', 'b' },
{'z', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'a' }};
char[] convertedMessage = new char[messageArray.length];
for (int x = 0, y = 0; x < messageArray.length; x++) {
char characterOfMessage = messageArray[x];
char characterOfKey = keyArray[(y % keyArray.length)];
if (characterOfMessage == ' ') {
convertedMessage[x] = ' ';
}
else convertedMessage[x] = DellaPortaArray[(((int)characterOfKey)-97) / 2][((int)characterOfMessage)-97]; y++;
} return convertedMessage;
}
public static String getKeyString(char[] keyArray){
String newKeyword = "";
for (int i = 0; i < keyArray.length; i++) { newKeyword = newKeyword + (keyArray[i]); }
return newKeyword;
}
public static String getMessageString(char[] messageArray){
String newMessage = "";
for (int i = 0; i < messageArray.length; i++) { newMessage = newMessage + (messageArray[i]); }
return newMessage;
}
}