在Java中创建Ubbi Dubbi转换器
我在一个入门java类中,对于我的一个程序,我希望创建一个ubbi dubbi翻译程序,它在每个元音和元音集群之前都发布一个ub。我不知道如何让我的程序正确运行,也不知道如何让它排除集群中包含的额外元音。我不允许使用Stringbuilder在Java中创建Ubbi Dubbi转换器,java,Java,我在一个入门java类中,对于我的一个程序,我希望创建一个ubbi dubbi翻译程序,它在每个元音和元音集群之前都发布一个ub。我不知道如何让我的程序正确运行,也不知道如何让它排除集群中包含的额外元音。我不允许使用Stringbuilder public void buttonPressed() { String lowerCase = ""; String userInput = input.getText(); Scanner words = new Sc
public void buttonPressed()
{
String lowerCase = "";
String userInput = input.getText();
Scanner words = new Scanner( userInput );
String ubbiDubbi = "";
//Splits up user input by line
while (words.hasNext()) {
//Converting to lower case.
lowerCase = words.next().toLowerCase();
System.out.println(lowerCase);
}
for (int i = 0; i < lowerCase.length(); i++) {
if (lowerCase.charAt(i+1) == 'a'){
ubbiDubbi = ubbiDubbi + lowerCase.charAt(i+1);
}
else if (lowerCase.charAt(i+1) == 'e') {
ubbiDubbi = ubbiDubbi + lowerCase.charAt(i+1);
}
else if (lowerCase.charAt(i+1) == 'i'){
ubbiDubbi = ubbiDubbi + lowerCase.charAt(i+1);
}
else if (lowerCase.charAt(i+1) == 'o'){
ubbiDubbi = ubbiDubbi + lowerCase.charAt(i+1);
}
else if (lowerCase.charAt(i+1) == 'u') {
ubbiDubbi = ubbiDubbi + lowerCase.charAt(i+1);
}
else {
ubbiDubbi += lowerCase.charAt(i);
}
public void按钮按下()
{
字符串小写=”;
字符串userInput=input.getText();
扫描器字=新扫描器(用户输入);
字符串ubbiDubbi=“”;
//按行拆分用户输入
while(words.hasNext()){
//转换成小写。
小写=words.next().toLowerCase();
System.out.println(小写);
}
for(int i=0;i
要让这个翻译程序正常工作,你基本上只需要逐级检查输入中的每个字符并将其写入输出。此外,如果输入是元音,你需要先写出“ub”,除非前面的字符也是元音
有一件事很方便,那就是能够识别元音。从为元音编写函数开始是个好主意。它可能看起来像:
private boolean isVowel(char c) {
return
c == 'a' || c == 'A' ||
c == 'e' || c == 'E' ||
c == 'i' || c == 'I' ||
c == 'o' || c == 'O' ||
c == 'u' || c == 'U';
}
现在,如果您查看翻译,就可以看到这一点了,我们希望跨过输入中的每个字符并将其写入输出。这可能如下所示:
private String translate(String raw) {
String translated = "";
for(char c:raw.toCharArray()) {
// some extra stuff needed here
translated += c;
}
return translated;
}
public class UbbiDubbi {
private boolean isVowel(char c) {
return
c == 'a' || c == 'A' ||
c == 'e' || c == 'E' ||
c == 'i' || c == 'I' ||
c == 'o' || c == 'O' ||
c == 'u' || c == 'U';
}
private String translate(String raw) {
String translated = "";
boolean wasLastCharacterVowel = false;
for(char c:raw.toCharArray()) {
if(isVowel(c)) {
if(!wasLastCharacterVowel) {
translated += "ub";
}
wasLastCharacterVowel = true;
} else {
wasLastCharacterVowel = false;
}
translated += c;
}
return translated;
}
public void buttonPressed() {
String userInput = "";// = input.getText();
Scanner words = new Scanner( userInput );
while (words.hasNext()) {
String lowerCase = words.next().toLowerCase();
String translated = translate(lowerCase);
System.out.println(translated);
}
words.close();
}
public static void main(String...none) {
System.out.println(new UbbiDubbi().translate("The quick brown fox jumps over the lazy aadvark"));
}
}
对于额外的内容,您需要知道当前字符是否为元音,以及前一个字符是否为元音,因此我们可以添加一些内容:
private String translate(String raw) {
String translated = "";
boolean wasLastCharacterVowel = false; //
for(char c:raw.toCharArray()) {
if(isVowel(c)) {
wasLastCharacterVowel = true;
} else {
wasLastCharacterVowel = false;
}
translated += c;
}
return translated;
}
最后,如果需要,您可以检查字符是否为元音,以及最后一个字符是否为元音:
private String translate(String raw) {
String translated = "";
boolean wasLastCharacterVowel = false;
for(char c:raw.toCharArray()) {
if(isVowel(c)) {
if(!wasLastCharacterVowel) {
translated += "ub";
}
wasLastCharacterVowel = true;
} else {
wasLastCharacterVowel = false;
}
translated += c;
}
return translated;
}
有了它,你只需要连接按钮按下动作等,所以看起来可能有点像这样:
private String translate(String raw) {
String translated = "";
for(char c:raw.toCharArray()) {
// some extra stuff needed here
translated += c;
}
return translated;
}
public class UbbiDubbi {
private boolean isVowel(char c) {
return
c == 'a' || c == 'A' ||
c == 'e' || c == 'E' ||
c == 'i' || c == 'I' ||
c == 'o' || c == 'O' ||
c == 'u' || c == 'U';
}
private String translate(String raw) {
String translated = "";
boolean wasLastCharacterVowel = false;
for(char c:raw.toCharArray()) {
if(isVowel(c)) {
if(!wasLastCharacterVowel) {
translated += "ub";
}
wasLastCharacterVowel = true;
} else {
wasLastCharacterVowel = false;
}
translated += c;
}
return translated;
}
public void buttonPressed() {
String userInput = "";// = input.getText();
Scanner words = new Scanner( userInput );
while (words.hasNext()) {
String lowerCase = words.next().toLowerCase();
String translated = translate(lowerCase);
System.out.println(translated);
}
words.close();
}
public static void main(String...none) {
System.out.println(new UbbiDubbi().translate("The quick brown fox jumps over the lazy aadvark"));
}
}
添加main方法提供了一种测试翻译的简单方法。希望这能有所帮助。这是有意义的,我对数组非常不熟悉,所以我甚至没有考虑过这一点。唯一的问题是我需要它来阅读每个单词,我必须使用while循环将其拆分为新行。我如何才能做到这一点,以便它能够阅读每一行?谢谢r您目前的帮助!您可以将该逻辑添加到buttonPressed()中,转换方法不需要更改。我已编辑了答案,将扫描仪包含在buttonPressed()中。是的,我刚刚通过将输出实现到while循环中来计算出代码。有没有办法让它读取每一行而不是最后一行?抱歉,我一直被难住了。当然,您需要将翻译逻辑移动到while循环中。目前,您的while循环在到达t之前终止翻译逻辑。结果是,您的翻译逻辑只看到最后一个设置为小写的值