函数findVowels for循环增量不起作用,只打印最后一个元音?

时间:2016-01-12 22:33:55

标签: java

这里的findVowels函数我试图打印每一个我从outPut函数得到的第二个元音,但它只打印最后一个元音....

import java.util.Scanner;

public class VowelString {

    static char rev;
    static String str;
    static int count = 0;

    void inPut() {
        Scanner sc = new Scanner(System.in);
        str = sc.nextLine();
        System.out.println(str);
        sc.close();
    }

    void outPut() {
        System.out.println(str);
        // int length=str.length();
        try {
            for (int i = 0; i <= str.length() - 1; i++) {
                if ((str.charAt(i) == 'a') || (str.charAt(i) == 'e')
                        || (str.charAt(i) == 'i') || (str.charAt(i) == 'o')
                        || (str.charAt(i) == 'u')) {
                    rev = str.charAt(i);
                    System.out.print(rev);
                    count++;
                }

            }
            // System.out.println(rev);
            System.out.println("\ntotal " + count);
        } catch (IndexOutOfBoundsException e) {
            System.out.println(e);
        }

    }

    void findVowels(char word) {
        this.rev = word;
        String asta = String.valueOf(rev);
        for (int i = 0; i <= asta.length() - 1; i = +2) {
            char nawa = asta.charAt(i);
            System.out.println("something = " + nawa);
        }

    }

    public static void main(String[] args) {
        VowelString vS = new VowelString();
        vS.inPut();
        // System.out.println("Values of Input " + vS);
        vS.outPut();
        // System.out.println("Values of OutPut " + vS);
        vS.findVowels(rev);

    }

}

2 个答案:

答案 0 :(得分:0)

您只保存您找到的最后一个元音

rev = str.charAt(i);

内部输出()。因此,findVowel中的rev似乎只有1个字符。也许你的意思是说

rev += str.charAt(i);

虽然在一般设置中不建议这样做,但除非你有大量的字符串,否则它可能就足够了。

答案 1 :(得分:0)

发布的代码应该打印所有元音。不仅仅是你说的最后一个。但也不是你想要的每一个。它写得也不好。这是打印每个第二个元音的一种方法,整体写得更好:

        for (int i = 0, count = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            switch (c) {
                case 'a':
                case 'e':
                case 'i':
                case 'o':
                case 'u':
                    count++;
                    if (count % 2 == 0) {
                        System.out.print(c);
                    }
                    break;
            }

        }