gpt4 book ai didi

java - 将单词或句子翻译成 pig 拉丁语

转载 作者:行者123 更新时间:2023-12-02 11:30:24 27 4
gpt4 key购买 nike

所以基本上我对这个问题的问题是我不允许使用 Stringbuilder、数组或 String.split() 来创建这个程序。我完全难以做到这一点,因为如果我能用这些方法来解决这个程序,我就不会在这里了。

至于实际的程序:所需要的是接受一个识别第一个元音的单词或句子,并取出它之前的字符,并将其放置在元音和其他字符之后,并用“-(元音之前的字符)ay”分隔它。换句话说,它以这种方式将字符串翻译成 pig 拉丁语:

The deepest shade

翻译成:

e-Thay eepest-day ade-shay

这就是我到目前为止所得到的,请记住,我在 if 语句的第 12 行收到了一个字符串越界错误,因为由于某种原因它在检测到单词之间的空格后崩溃了。我也不知道如何结合一种方法让这个程序只处理单个单词和句子。

public static void main(String[] args){
String word = "", temp = "", secondTemp = "", beforeVowel = "", translation = "";
int start = 0, stop = 0, counter = 0;
char a = 'a', e = 'e', charI = 'i', o = 'o', u = 'u';
Scanner input = new Scanner(System.in);
System.out.println("Enter a word or sentence to translate it into Pig Latin");
word = input.next();
while(input.hasNext()) {
if(!(word.charAt(stop) == ' ')) {
stop++;
}
else {
temp = word.substring(start, stop);
start = stop;
for(int i = 0; i<temp.length(); i++) {
if(temp.charAt(i) == a || temp.charAt(i) == e || temp.charAt(i) == charI || temp.charAt(i) == o || temp.charAt(i) == u) {
secondTemp = temp.substring(0, i);
translation = temp.substring(i-1) + "-" + secondTemp + "ay";
}
}
}

System.out.println(translation);
}
}

我做了一些更改来改进我的代码,并且已经达到了可以翻译字符串的第一个单词的程度,但我的代码将完全忽略字符串中的其余单词。

    public static void main(String[] args){
String word = "", temp = "", secondTemp = "", beforeVowel = "", translation = "";
int start = 0, stop = 0, counter = 0;
char a = 'a', e = 'e', charI = 'i', o = 'o', u = 'u';
Scanner input = new Scanner(System.in);
System.out.println("Enter a word or sentence to translate it into Pig Latin");
word = input.next();
while(input.hasNext()) {
for(int i = 0; i<word.length(); i++) {
if(word.charAt(i) == a || word.charAt(i) == e || word.charAt(i) == charI || word.charAt(i) == o || word.charAt(i) == u) {
secondTemp = word.substring(0, i);
translation += word.substring(i) + "-" + secondTemp + "ay";
}
}
break;
}

System.out.println(translation);
}
}

最佳答案

input.next() 已经为您提供了下一个单词,所以我认为您不必四处寻找空格。这看起来像家庭作业,所以也许最好不要给你完整的答案,但你的做法非常接近。

因为 input.next() 提供了下一个单词,所以我完全摆脱了这里的分支。单词中没有空格。

    if(!(word.charAt(stop) == ' ')) {
stop++;
}
else {
temp = word.substring(start, stop);
start = stop;

并且,由于 hasNext() 对于最后一个元素返回 false,因此最后一个元素将不会被处理,因此我将循环更改为如下所示:

for (word = input.next(); input != null; word = input.next()) {

(当没有剩余输入时input.next()返回null)

该行有一个相差一错误:

translation = temp.substring(i-1) + "-" + secondTemp + "ay";

并且您需要在之后立即break跳出此循环,否则它将转到下一个元音并丢弃我们找到的翻译。

关于java - 将单词或句子翻译成 pig 拉丁语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49331581/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com