有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用数学交换句子中的元音。随机()方法?

我一直在学习java的在线课程,最近刚刚从课程中休息一下来制作这个应用程序。应用程序要求用户输入一个句子,然后输出相同的句子,但所有元音都交换了。我把它设置成这样:

private static char  [] vowels = {'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'}; 
//(no need to worry about y)

然后我有一个方法,从输入句子中提取所有元音,将其添加到不同的数组中,并添加一个空格字符来替换输入句子中不等于元音数组中任何值的任何内容。我这样做是为了保持元音在新数组中的索引相同。现在我有了一个数组,它的长度与输入句子的长度相同;与输入句子具有相同的元音,且所有元音都位于同一索引中;并用空格替换所有非元音的句子值

如果输入的句子是:

String sentence = "Hey what's up";

迭代语句的数组的输出值为:

[ , e,  ,  ,  ,  , a,  ,  ,  ,  , u,  ]

所以元音的索引是:1,6,11

有什么方法可以随机化索引以及它们所属的值吗?任何关于如何交换句子中元音的想法都将不胜感激!这是一种迭代输入句子并将该句子的元音添加到新数组中的方法:

public void addVowelArray(String sentence) {
    vowelArray = new char [sentence.length()];
    for (int i = 0; i < sentence.length(); i ++) {
        for (int x = 0; x < vowels.length; x ++) {
            if (sentence.charAt(i) == vowels[x]) {
                vowelArray [i] = sentence.charAt(i);
            }
        }
        for (int y = 0; y < everyOtherLetter.length; y ++) {
            if (sentence.charAt(i) == everyOtherLetter[y]) {
                vowelArray[i] = ' ';
            }
        }
    }
    //for (int i = 0; i < vowelArray.length; i ++) {
    //System.out.print(vowelArray[i]);
    //}
    System.out.println(java.util.Arrays.toString(vowelArray));
    System.out.println(vowelArray[0]);
}

共 (1) 个答案

  1. # 1 楼答案

    如果我理解你的问题,也许更简单的方法是

    sentence.replace('a', getOtherRandomVowel ());

    getOtherRandomVowel方法可以写成

    private char getOtherRandomVowel () {
    
        Character  [] vowels = {'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'};
        List<Character> vl = Arrays.asList(vowels);
    
    
        Collections.shuffle(vl);
        return vl.get(0);
    }
    

    编辑

    根据您的要求,您可能需要检查返回的字符是否与原始字符不同