【发布时间】:2016-10-17 01:30:26
【问题描述】:
我正在编写一个程序,它接受一个字符串,将其拆分为单词,将单词转换为 pig latin,然后返回结果字符串。我让它工作到一定程度。
例如,如果我将这些不以元音开头的单词输入到程序中,我会得到:
猪 -> igpay
垃圾 -> rashtay
鸭子-> uckday
(对于不以元音开头的单词,它们的第一个字母被删除,与“ay”一起添加到单词的末尾)
当单词以元音开头时也可以使用(只需在单词末尾添加“yay”即可)。
例如,如果我将这些词输入到程序中,我会得到:
吃 ->eatyay
areyay -> areyay
煎蛋卷 -> 煎蛋卷
现在我遇到的问题是,如果我将两个单词组合在一起,一个以元音开头,一个不以元音开头,它会打印出两个单词,就像它们都以元音开头一样。
例如,如果我将这些词输入到程序中,我会得到:
猪-> 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;
}
}
【问题讨论】:
标签: java