添加字母的例外

时间:2017-01-10 19:17:01

标签: java

在我的程序中,它搜索文本文件,在这种情况下是字典中每个单词的列表,如果在其中找到了aeiou,则在元音的数量上添加一个数字。我需要为y计数添加一个例外,只有在单词中找不到其他元音时才需要计算。我对这个概念很陌生,想知道我是否朝着正确的方向前进。帮助会被爱!

package TEST;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class test {

    public static void main(String[] args) throws FileNotFoundException, IOException{
        int count= 0;

        FileReader FR = new FileReader("Words.txt");
        BufferedReader BR = new BufferedReader(FR); 

        String Vowels;
        while((Vowels= BR.readLine()) != null) {

                for (int i = 0; i < Vowels.length(); i++) {
                  char c = Vowels.charAt(i);

                if (c=='a'||c=='e'||c=='i'||c=='o'||c=='u' ) {
                       count++;
                 // if (c=='y') {
                 //    count++;

                           }}}
              System.out.println("Total:"+ count);
                }}

3 个答案:

答案 0 :(得分:2)

为确保单词中不包含y,您必须等待单词的所有字母都被读取。所以你应该在for循环之后增加当前单词的y数,如果它是相关的,那就是找到了a-e-i-o-u个字母。

您需要的变量:

  • int countY计算当前单词中找到的y数。
  • boolean isOtherVoyelsThanYfound标记当前单词中是否找到a-e-i-o-u个字母。

对于要分析的每个新词,应重新启动0false

这是一个想法:

while{
...
  boolean isOtherVoyelsThanYfound = false;
  int countY = 0;

  for (int i = 0; i < Vowels.length(); i++) {
    char c = Vowels.charAt(i);

    if (c=='a'||c=='e'||c=='i'||c=='o'||c=='u' ) {
         count++;
         isOtherVoyelsThanYfound = true;
    }
    else if (c == 'y'){
        countY++;
    }
  }

  if (!isOtherVoyelsThanYfound){
    count += countY;
  }
... 
}

答案 1 :(得分:1)

您可以尝试这种方法:

while((Vowels= BR.readLine()) != null) {
    boolean foundVowel = false;    

    for (int i = 0; i < Vowels.length(); i++) {
        char c = Vowels.charAt(i);

        if (c=='a'||c=='e'||c=='i'||c=='o'||c=='u') {
            count++;
            foundVowel = true;
        }
    }

    if (!foundVowel) {
        for (int i = 0; i < Vowels.length(); i++) {
            char c = Vowels.charAt(i);

            if (c=='y'||c=='e'||c=='i'||c=='o'||c=='u') {
                count++;
            }
        }        
    }
}
System.out.println("Total:"+ count);

在这里扫描所有单词,当您找不到任何元音时,只需搜索 y s再次扫描。

答案 2 :(得分:-1)

嘿,你可以使用另一个int来计算每个“y”并计算它们。 然后最后你可以检查count!= 0或者用你的yCount覆盖它。 所以你的代码看起来应该是这样的。

public static void main(String[] args) throws FileNotFoundException, IOException{
        int count= 0;
        int yCount = 0;

    FileReader FR = new FileReader("Words.txt");
    BufferedReader BR = new BufferedReader(FR); 

    String Vowels;
    while((Vowels= BR.readLine()) != null) 
    {

            for (int i = 0; i < Vowels.length(); i++) 
            {
              char c = Vowels.charAt(i);

              if (c=='a'||c=='e'||c=='i'||c=='o'||c=='u')
                   count++;

              if (c=='y') 
                   yCount++;

             }

             if(count == 0)
             count = yCount;

          System.out.println("Total:"+ count);
  }

这样,当count == 0时,你不必扫描文件两次。