有 Java 编程相关的问题?

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

java如何找到字符串中第一个元音的索引?

我希望实现此部分,但不知道如何实现: 在猪拉丁语中,直到第一个元音的所有辅音都应该移到单词的末尾。所以,虽然“笔记本”仍然是“aptoplay”,但“string”应该变成“ingstary”

我有这个,第一部分很好用

public static String doStuff(String word) {
    int number = 0;
    char[] vowel = { 'a', 'e', 'i', 'o', 'u' };
    char first = word.charAt(0);
    char second = Character.toLowerCase(first);
    if (second == 'a' || second == 'e' || second == 'i' || 
            second == 'o' || second == 'u') {
        word = word + "ay";
    } else {
        for (int i = 0; i < word.length(); i++) {
        for (int j = 0; j < 5; j++) {
            if (word.charAt(i) == vowel[j]) {
                word = word.substring(i + 1) + word.substring(i) + "ay";
                break;
            }
        }
    }
    return word;
}

共 (6) 个答案

  1. # 1 楼答案

    首先,你的break应该打破这两个循环。为此,在第一个循环前放置一个标志,如

    outerloop:
    for (int i = 0; i < word.length(); i++) {
    

    然后代替break;break outerloop;

    第二,

    word = word.substring(i + 1) + word.substring(i) + "ay";
    

    不起作用,因为当你找到元音时,你想把它放在前面,所以i + 1应该是i。然后,“ay”之前的子串的其余部分应该是开头的辅音,因此0, i而不仅仅是i。总的来说,这给了

    outerloop:
        for (int i = 0; i < word.length(); i++) {
            for (int j = 0; j < 5; j++) {
                if (word.charAt(i) == vowel[j]) {
                    word = word.substring(i) + word.substring(0, i) + "ay";
                    break outerloop;
                }
            }
        }
    
  2. # 2 楼答案

    我是新来的,所以不太了解这些惯例。无论如何,下面的代码应该能够帮助您实现所需的转换

    使用元音列表可以提供“contains”操作,与嵌套循环相比,该操作更易于理解代码。但在处理方面没有优势

    在下面的代码中,inp是输入字符串

    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    
    public class piglatin {
        public static void main(String args[]) {
            String[] vowels = new String[] { "A", "a", "E", "e", "I", "i", "O",
                    "o", "U", "u" };
            List<String> vowelList = new ArrayList<String>(Arrays.asList(vowels));
            String inp = "string";
            String returnString = inp;
            for (int i = 0; i < inp.length(); i++) {
                if(vowelList.contains(""+inp.charAt(i))){
                    returnString = inp.substring(i)+inp.substring(0,i)+"ay";
                    break;
                }
            }
            System.out.println(returnString);
        }
    
    }
    

    编辑:没有意识到“.contains”可以与字符串一起使用,也可以由Shar1er80完成。现在的堆栈交换不只是学习;)

  3. # 3 楼答案

    检查字符串的长度,检查“aeiou”是否是拆分点处的字符之一。如果是,则相应地重新结束字符串,否则继续下一个字符

    String doStuff(string a)
    {
        char c;
        string s = "aeiou" //y?
        int i,l;
        l=a.length();
        for(i = 0;i < l;i++)
        {   
            c=a.charAt(i);
            if(s.contains(c))
            break;
        }
        a=a.substring(i,l)+a.substring(0,i)+"ay";
        return a;
    }
    
  4. # 4 楼答案

    public static String pigLatin(String origianl){
                List<Character> vowels = new ArrayList<>(5);
                vowels.add('a');
                vowels.add('e');
                vowels.add('i');
                vowels.add('o');
                vowels.add('u');
                boolean vowelFound;
                for(int i = 0; i < origianl.length(); i++){
                    if(vowels.contains(origianl.toLowerCase().charAt(i))){
                        String post = origianl.substring(0, i);
                        String pre = origianl.substring(i);
                        return pre + post + "ay";
                    }
                }
                return null;
            }
    

    你不必使用列表。还有很多其他选项(比如在if语句中使用一堆||)。另外,如果可能的话,最好将List放在方法之外,这样就不需要在每次调用方法时都创建它

  5. # 5 楼答案

    只需遍历字符串,直到碰到第一个元音,这将为String.substring()提供所需的索引值

    只需将doStuff()方法更改为以下内容:

    public static void main(String[] args) throws Exception {
        System.out.println(doStuff("laptop"));
        System.out.println(doStuff("String"));
        System.out.println(doStuff("apple"));
    }
    
    public static String doStuff(String word) {
        String vowels = "aeiouAEIOU";
        for (int i = 0; i < word.length(); i++) {
            if (vowels.contains(""+word.charAt(i))) {
                String prefix = word.substring(0, i);
                String suffix = word.substring(i);
                word = suffix + prefix + "ay";
                break;
            }
        }
        return word;
    }
    

    结果:

    aptoplay
    ingStray
    appleay
    
  6. # 6 楼答案

    char[] ar = new char[] { 'u', 'o', 'i', 'e', 'a' };
            string Word = "Hello";
            int count=0;       
            for (int i = 0; i < Name.Length; i++)
            {
                for (int j = 0; j < ar.Length; j++)
                {
                    if (Word[i] == ar[j])
                    {
                        count++;
                        Console.WriteLine("{0},{1}",Word[i], i);
                        break;
                    }
                }
                if (count==1)
                {
    
                    break;
                }