【问题标题】:Printing out vowels using For Loop [closed]使用 For 循环打印出元音 [关闭]
【发布时间】:2014-11-16 02:46:06
【问题描述】:
import java.util.Random;

public class Test{
    public static void main(String[] args){
        final Random r = new Random();


        String ch = "aeiouycbdfgh";
        int len = r.nextInt(10) + 10;
        StringBuffer sb = new StringBuffer();
        for (int i=0; i<len; i++){
            sb.append(ch.charAt(r.nextInt(ch.length())));
        }
        System.out.println("String:" + sb);
        System.out.println("Vowels:");
        outputVowels(sb.toString());

    }


    public static void outputVowels(String s){

如何创建一个 for 循环,将 ch 字符串的元音分别输出到不同的行中?

编辑:该程序旨在输出 一种 e 一世 ○ 你

【问题讨论】:

  • for(int i = 0; i &lt; 5; i++) System.out.println(ch.charAt(i)); ?
  • @Seelenvirtuose,他们似乎搞砸了这个问题。他们从 ch 创建一个新的随机选择的字符字符串。您可以在代码中看到他们打算在构建器中显示元音。
  • 我投了反对票 - 没有明显的先前研究或努力的迹象。这是一个非常常见的编程任务——不尝试只是很糟糕。
  • @ChiefTwoPencils 这就是我在评论中打上问号的原因。事实上,这个问题应该被编辑,因为它非常不清楚。
  • 编辑后的问题:尽管“程序旨在[简单地]输出 a e i o u”,但为什么您有这么多处理随机数的代码?这是一个糟糕的问题,值得一票否决。

标签: java loops for-loop


【解决方案1】:

首先准备全局元音集 - 以便快速访问:

Set<Character> vowelSet = new HashSet<>();
vowelSet.addAll(Arrays.asList('a', 'e', 'i', 'o', 'u'));

其次,你可以这样写扫描循环:

String str = "ahjuekjdf";

for (int i=0; i<str.length(); i++) {
    char c = str.charAt(i);
    if(vowelSet.contains(c)) {
        System.out.println(c);
    }
}

【讨论】:

  • 可能比for (char c : str.toCharArray()) {...}更整洁。
  • 没错,str.toCharArray 更整洁,但在后面执行不必要的数组复制......但我同意 - 在这种情况下可读性更重要:)
  • @przemek hertel +1 获取数组列表
【解决方案2】:

将循环更改为

for (int i=0; i<len; i++) {
    char c = sh.charAt(i);
    if ((c=='a')||(c=='e')||(c=='i')||(c=='o')||(c=='u')) {
        sb.append(ch.charAt(r.nextInt(ch.length())));
    }
}

【讨论】:

    【解决方案3】:

    您可以直接使用Regex

    public class Test {
        public static void main(String[] args) {
            String s = "Ankur";
            s = s.replaceAll("[^aeiouAEIOU]", "");
            System.out.println(s);
        }
    }
    

    输出

    Au
    

    【讨论】:

      【解决方案4】:
       for(char v : vowel){
          if(ch == v){
              cout <<ch<<" is vowel";
              break;
          }
          else{
              cout <<ch<<" is consonant";
              break;
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2011-09-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-08
        • 2019-03-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多