在我的程序中,它搜索文本文件,在这种情况下是字典中每个单词的列表,如果在其中找到了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);
}}
答案 0 :(得分:2)
为确保单词中不包含y
,您必须等待单词的所有字母都被读取。所以你应该在for循环之后增加当前单词的y数,如果它是相关的,那就是找到了a-e-i-o-u
个字母。
您需要的变量:
int countY
计算当前单词中找到的y数。boolean isOtherVoyelsThanYfound
标记当前单词中是否找到a-e-i-o-u
个字母。对于要分析的每个新词,应重新启动0
和false
。
这是一个想法:
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时,你不必扫描文件两次。