java 如何将用户输入字符串转换为pig latin?

zbq4xfa0  于 2023-06-20  发布在  Java
关注(0)|答案(3)|浏览(102)

我试图转换一个用户输入的字符串,以辅音开始Pig拉丁购买移动所有的辅音到单词的末尾,直到单词以元音开始,然后添加“ay”到单词的末尾。我有一个for循环应该这样做,但由于某种原因,它没有输出任何东西。我做错了什么?我被难住了。
代码如下:

import java.util.Scanner;

public class two {
    public static void main(String[] args) {

        System.out.println("Please enter a word");
        Scanner word = new Scanner(System.in);
        String pigLatin = word.nextLine();
        while (!pigLatin.equalsIgnoreCase("quit")) {
            if (isVowel(pigLatin.charAt(0))) {
                pigLatin = (pigLatin + "way");
                System.out.println(pigLatin);
            } 
            else {
                for (int i = 0; i < pigLatin.length(); i++) {
                    char firstChar = pigLatin.charAt(0); 
                    pigLatin = pigLatin.substring(1);
                    pigLatin = pigLatin + firstChar;
                    if (i >= pigLatin.length())
                    {
                        pigLatin = pigLatin + "ay";
                        System.out.println(pigLatin);
                    }
                }

            }

            System.out.println("Please enter a word");
            pigLatin = word.nextLine();
        }
        word.close();

    }

    private static boolean isVowel(char ch) {
        char v = Character.toLowerCase(ch);
        if (v == 'a' || v == 'e' || v == 'i' || v == 'o' || v == 'u') {
            return true;
        }

        else {
            return false;
        }

    }

}
8yparm6h

8yparm6h1#

在i上需要一个小于或等于<=,否则i永远不会大于或等于pigLatin. length()。

for (int i = 0; i <= pigLatin.length(); i++) {
                    char firstChar = pigLatin.charAt(0); 
                    pigLatin = pigLatin.substring(1);
                    pigLatin = pigLatin + firstChar;
                    if (i >= pigLatin.length())
                    {
                        System.out.println(pigLatin);
                    }
                }
cwtwac6a

cwtwac6a2#

你的for循环条件是

i < pigLatin.length()

你说如果

if(i >= pigLatin.length()){....}

所以这个条件永远不会为真,因为没有输出,
参见下面的代码,

import java.util.Scanner;

/**
 *
 * @author rahmat waisi
 */
public class PigLatin {

    public static void main(String[] args) {
        try (Scanner scanner = new Scanner(System.in)) {
            while (true) {
                // System.out.print("Please enter a word: , Enter [ quit ] for exit : ");
                String pigLatin = scanner.nextLine();
                if (pigLatin.equals("quit")) {
                    break;
                }
                if (isVowel(pigLatin.charAt(0))) {
                    pigLatin += "ay";
                    System.out.println(pigLatin);
                } else {
                    String output = "";
                    int separation_index = findFirstVowel(pigLatin);
                    if (separation_index ==-1) {
                        System.out.println(pigLatin+"ay");
                        continue;
                    }
                    output+= pigLatin.substring(separation_index);
                    output+= pigLatin.substring(0, separation_index) + "ay";
                    System.out.println(output);
                }
            }
        }
    }

    private static boolean isVowel(char ch) {
        char v = Character.toLowerCase(ch);
        return v == 'a' || v == 'e' || v == 'i' || v == 'o' || v == 'u';
    }

    private static int findFirstVowel(String str) {
        for (int i = 0; i < str.length(); i++) {
            if (isVowel(str.charAt(i))) {
                return i;
            }
        }
        return -1;
    }

}

以下是一些输入:

pig
banana
trash
happy
duck
glove
eat
omelet
are
ffff
quit

它们的输出是:

igpay
ananabay
ashtray
appyhay
uckday
oveglay
eatay
omeletay
areay
ffffay
relj7zay

relj7zay3#

import java.util.Scanner;
public class two { public static void main(String[] args){

System.out.println("Please enter a word");
    Scanner word = new Scanner(System.in);
    String pigLatin = word.nextLine();
    while (!pigLatin.equalsIgnoreCase("quit")) {
        if (isVowel(pigLatin.charAt(0))) {
            pigLatin = (pigLatin + "way");
            System.out.println(pigLatin);
        } 
        else {
            for (int i = 0; i < pigLatin.length(); i++) {
                char firstChar = pigLatin.charAt(0); 
                pigLatin = pigLatin.substring(1);
                pigLatin = pigLatin + firstChar;
                if (i >= pigLatin.length())
                {
                    pigLatin = pigLatin + "ay";
                    System.out.println(pigLatin);
                }
            }

        }

        System.out.println("Please enter a word");
        pigLatin = word.nextLine();
    }
    word.close();

}

private static boolean isVowel(char ch) {
    char v = Character.toLowerCase(ch);
    if (v == 'a' || v == 'e' || v == 'i' || v == 'o' || v == 'u') {
        return true;
    }

    else {
        return false;
    }

}

}

相关问题