2014-11-02 27 views
0

嘿,這是我第一次發佈!我讓我的程序從用戶的輸入中打印出元音,但我覺得我已經在for循環中重複了很多。有沒有更快的方法來做到這一點?此代碼是否可讀並且格式正確?更容易找到元音並打印它們的方法? JAVA

import java.util.Scanner; 
public class Task09 { 

public static void main(String[] args) 
{ 

    Scanner input = new Scanner(System.in); 

    String vowels =""; 

    //input from user 
    String answer= input.next() 

    //loop to find vowels 

    for(int i = 0 ;i<answer.length();i++) 
    { 
     char answerPosition = answer.charAt(i); 

     //checks if there are vowels in code 
     if (answerPosition =='a' 
       ||answerPosition =='e' 
       ||answerPosition =='i' 
       ||answerPosition =='o' 
       ||answerPosition =='u' 
       ||answerPosition =='A' 
       ||answerPosition =='I' 
       ||answerPosition =='O' 
       ||answerPosition =='U') 
     { 
      vowels += answerPosition + " "; 
     } 

    } 
      System.out.println("The vowels are:" + vowels); 

    input.close(); 

} 

}

+0

您的代碼是否工作?不,它不是最乾淨的代碼,但對新手來說也不錯。如果它適合你,我會說去吧。 – 2014-11-02 15:10:03

+1

你的代碼沒有問題(除了'input.next'後面缺少一個分號。因爲你正在尋找改進工作代碼的方法,所以在http://codereview.stackexchange.com上發佈你的問題。 – 2014-11-02 15:10:57

+0

當然你可以使用花哨的RegularExpression或其他一些方法來做同樣的事情,但是對於這個小例子,它是OK的 – Drejc 2014-11-02 15:12:35

回答

1

試試這個:

String newString = answer.replaceAll("[^AaeEiIoOuU]", ""); 
    System.out.println(newString); 

你不會需要循環,而且您的代碼將是緊湊和甜蜜。

+0

我喜歡它!所以很酷有幾乎所有的方法! – Crazypigs 2014-11-02 19:08:18

+0

對於正則表達式,[^]是什麼?它們與數組有關嗎? ?該方法是用「」替換元音嗎?如何讓我打印出元音? 它說在java的網站: 「參數: 正則表達式 - 正則表達式到該字符串是要被匹配 更換 - 字符串被替換爲每個匹配」 http://docs.oracle.com/javase/7 /docs/api/java/lang/String.html – Crazypigs 2014-11-02 19:12:49

+0

這意味着不包含volwels(^表示不在) – SMA 2014-11-03 09:17:43

1

你可以這樣做:

if ("aeiouAEIOU".indexOf(answerPosition) >= 0) { 
    vowels += answerPosition + " "; 
} 

內循環。

此外,作爲一個風格問題,你可以寫迭代略有不同:

for (char c: answer.toCharArray()) { 
    if ("aeiouAEIOU".indexOf(c) >= 0) { 
     vowels += c + " "; 
    } 
} 
0

你可以這樣做太。

import java.util.Scanner; 

public class Hi { 

    public static void main(String[] args) { 

     Scanner input = new Scanner(System.in); 

     String vowels = ""; 

     // input from user 
     String answer = input.next(); 

     // loop to find vowels 

     for (int i = 0; i < answer.length(); i++) { 
      char answerPosition = answer.charAt(i); 
      char tempAnsPos = Character.toUpperCase(answer.charAt(i)); 

      // checks if there are vowels in code 
      if (tempAnsPos == 'A' || tempAnsPos == 'E' || tempAnsPos == 'I' || tempAnsPos == 'O' || tempAnsPos == 'U') { 
       vowels += answerPosition + " "; 
      } 

     } 
     System.out.println("The vowels are:" + vowels); 

     input.close(); 

    } 
} 
+0

錯過了「E」;) – Drejc 2014-11-02 15:29:15

+0

@Drejc:該死的複製粘貼:)。 Correctd – NewUser 2014-11-02 15:31:14

相關問題