2014-09-01 16 views
-1

好的,所以問題是編寫一個程序來識別來自輔音的元音。我需要使用掃描儀和hasNext()如何使用hasNext代碼?

輸出應該是這樣的

輸入一個字母:一個

一個是元音

輸入一個字母:乙

b爲輔音

輸入字母:1

1無效輸入

它將繼續讀,直到到達文件末尾 教授暗示使用hasNext,因爲它會返回false當沒有輸入

所以這是我迄今爲止

Scanner input = new Scanner(System.in); 

    System.out.print("Enter a letter: "); 
    char letter = input.next().charAt(0); 

     if (letter=='a'||letter=='A'||letter=='e'||letter=='E'||letter=='i'||letter=='I'||letter=='o'||letter=='O'||letter=='u'||letter=='U'){ 
      System.out.println(letter + " is a vowel"); 
     } 
     else if(Character.isLetter(letter)){ 
      System.out.println(letter + " is a consonant"); 
     } 

     else { 
      System.out.println(letter + " is an invalid input"); 

     } 

我需要的是在輸入任何輸入後循環它,它會再次要求輸入一個字母。並繼續循環它,直到它到達文件的結尾使用已經下一步

+0

你想要一個文件或系統輸入? – 2014-09-01 04:18:53

+0

在英語中,y,r,l有時是元音。更重要的是,您將所有非英文字母和所有重音字母計爲輔音。識別腳本語言的元音和輔音是語言學,在軟件庫中得不到很好的支持。如果你寫這種邏輯,一定要包括「不知道」的情況,而不是由於未說明的假設而產生錯誤的結果。我認爲這是唯一可以使用Character.isLetter的情況。 – 2014-09-06 02:07:50

回答

1

我不認爲你聽到或理解的提示。你應該只使用hasNext(),這將確定是否有(任何種類的)輸入。確定角色是元音還是輔音還是無效的邏輯是好的。您需要一個使用hasNext()的while循環來確定何時到達文件結尾。

+0

我還是java的初學者,現在我明白了,謝謝你的幫助 – Nathan 2014-09-01 04:54:04

+0

如果這個答案有幫助,選擇它作爲接受,表明你發現它有幫助。 – 2014-09-01 07:42:26

0

試試這個。

Scanner input = new Scanner(System.in); 
    char letter; 
    System.out.print("Enter a letter: "); 
    while(input.hasNext()) 
    { 

     letter = input.next().charAt(0); 

     if (letter=='a'||letter=='A'||letter=='e'||letter=='E'||letter=='i'||letter=='I'||letter=='o'||letter=='O'||letter=='u'||letter=='U') 
     { 
      System.out.println(letter + " is a vowel"); 
     } 
     else if(Character.isLetter(letter)){ 
      System.out.println(letter + " is a consonant"); 
     } 

     else { 
      System.out.println(letter + " is an invalid input"); 

     } 

     System.out.print("Enter a letter: "); 
    } 
+0

非常感謝你!我想插入第二個system.out在每個條件,但我也認爲這是尷尬。 – Nathan 2014-09-01 04:53:35

+0

我也是初學者,我認爲一開始沒有什麼尷尬的。快樂的編碼 – Saif 2014-09-01 04:58:47

0

所以你需要做幾件事情。

  1. 閱讀文件。因此,而不是Scanner input = new Scanner(System.in);,您可以使用掃描儀的對象,而不是讀文件,像這樣:

    Scanner input = new Scanner(new File("path\\to\\vowels.txt")); 
    
  2. 遍歷該文件來測試每個輸入。因此請使用while循環。

  3. 在該循環中,出現何時停止的條件。那麼hasNext將返回true,只要文件中有更多的輸入,所以條件將是while (input.hasNext())。這是如何使用hasNext()方法在有輸入時繼續讀取文件的方式。

不要忘了,讀取文件時,必須將其包圍在try-catch塊中,以防文件未找到或出現其他問題。你的代碼可能看起來像這樣:

try { 
    Scanner input = new Scanner(new File("C:\\Users\\Mike\\Desktop\\vowels.txt")); 

    while (input.hasNext()) { 
     char letter = input.next().charAt(0); 

     if (letter=='a'||letter=='A'||letter=='e'||letter=='E'||letter=='i'||letter=='I'||letter=='o'||letter=='O'||letter=='u'||letter=='U'){ 
      System.out.println(letter + " is a vowel"); 
     } 
     else if(Character.isLetter(letter)){ 
      System.out.println(letter + " is a consonant"); 
     } 
     else { 
      System.out.println(letter + " is an invalid input"); 
     } 
    } 
} catch (Exception e) { 
    e.printStackTrace(); 
}