Я пишу программу, которая берет строку, разбивает ее на слова, преобразует слова в pig latin и возвращает строку результата. У меня есть работа над определённым моментом.Pig Latin String Encryption
Например, если я ввожу эти слова, которые не начинаются с гласной в программу я получаю:
свинья -> igpay
мусора -> rashtay
утка -> uckday
(для слов, не начинайте с гласных, их первая буква удаляется, добавляется к концу слова вместе с «ay»)
Он также работает, когда слово начинается с гласного (просто возьмите слово и добавьте " yay "до конца).
Например, если я ввожу эти слова в программу я получаю:
едят -> eatyay
areyay -> areyay
омлета -> omeletyay
Теперь вопрос я имею если я объединю 2 слова, один из которых начинается с гласного, а тот, который этого не делает, печатает оба, как они начинаются с гласных.
Например, если я ввожу эти слова в программу я получаю:
свинью -> pigyay (должно быть igpay)
едят -> eatyay (правильный)
Может быть, стоит отметить, что в этой программе должны использоваться методы «isVowel» & «pigLatinEncrypt». Пожалуйста, не обращайте внимания на другие методы, которые находятся в программе.
public static void main(String[] args) {
// TODO code application logic here
String input, message;
int ans1, ans2, key;
input = JOptionPane.showInputDialog("1. to decrypt a message\n2. to encrypt a message");
ans1 = Integer.parseInt(input);
input = JOptionPane.showInputDialog("1. for an entire message reversal encryption\n"
+ "2. for a Pig-Latin encryption\n3. for a simple Caesar style encryption");
ans2 = Integer.parseInt(input);
if (ans2 == 3) {
input = JOptionPane.showInputDialog("Please enter a key for encryption");
key = Integer.parseInt(input);
}
input = JOptionPane.showInputDialog("Please enter the message to encrypt or decrypt");
message = input;
if (ans2 == 1) {
reverseEncryptandDecrypt(message);
}
if (ans2 == 2) {
String[] words = message.split(" ");
if (ans1 == 2) {
boolean isVowel = isVowel(words);
pigLatinEncrypt(words, isVowel);
}
if (ans1 == 1) {
pigLatinDecrypt(message);
}
}
}
public static void reverseEncryptandDecrypt(String message) {
char[] stringToCharArray = message.toCharArray();
System.out.print("You entered the message: ");
for (char c : stringToCharArray) {
System.out.print(c);
}
int i = stringToCharArray.length - 1, j = 0;
char[] reverse = new char[stringToCharArray.length];
while (i >= 0) {
reverse[j] = stringToCharArray[i];
i--;
j++;
}
System.out.print("\n\nThe result is: ");
for (char c : reverse) {
System.out.print(c);
}
System.out.println();
}
public static void pigLatinEncrypt(String[] words, boolean isVowel) {
for (String word : words) {
if (isVowel == true) {
System.out.print(word + "yay ");
} else {
System.out.print(word.substring(1) + word.substring(0, 1) + "ay ");
}
}
}
public static boolean isVowel(String[] words) {
boolean isVowel = false;
for (String word : words) {
if (word.startsWith("a") || word.startsWith("e") || word.startsWith("i") || word.startsWith("o")
|| word.startsWith("u")) {
isVowel = true;
}
}
return isVowel;
}
}
А это имеет смысл. Я просто смущен тем, как писать эту программу. Я должен иметь возвращаемое значение для моего метода «isVowel», но я не уверен, как преобразовать возвращаемое значение в массив для метода «pigLatinEncrypt». –
Я отредактировал свой ответ. – ajb