-2

ファイル内の文字「A」で始まり文字「A」で終わるすべての単語を数える必要があります。ファイル内のすべての単語を数えることができましたが。これがコードです...

public class task_1 {

public static int i;

/**
 * @param args the command line arguments
 */
public static void main(String[] args) throws IOException {
    Scanner sc = new Scanner (System.in);
    String name = sc.nextLine();
    sc.close();
    FileReader fr2 = new FileReader(name);
    BufferedReader r = new BufferedReader(fr2);

    String s=r.readLine();

    int n=0;
    while(s!=null) {
        System.out.println(s);
        String [] words = s.split(" ");
        n += words.length;
        for(String str : words)
        {
            if(str.length()==0) n--;
        }
        s=r.readLine();
    }
    fr2.close();
    System.out.println(n);                                                          
    }
}
4

5 に答える 5

0
public static void main(String[] args) throws Exception {
    File file = new File("sample.txt");
    Scanner sc = new Scanner(new FileInputStream(file));
    int count = 0;
    while (sc.hasNext()) {
        String s = sc.next();
        if (s.toLowerCase().startsWith("a")
                && s.toLowerCase().endsWith("a"))
            count++;
    }
    System.out.println("Number of words that starts and ends with A or a: "
            + count);
}

単語の総数をカウントしたい場合は、if条件を削除してください。

于 2013-02-05T10:25:49.900 に答える
0
while(s != null) {
    String [] words = s.split(" ");
    for(String str : words) {
        if((str.startsWith("a") || str.startsWith("A")) 
              && (str.endsWith("a") || str.endsWith("A"))) {
            ++n;
        }
    }
    s = r.readLine();
}
于 2013-02-05T10:09:21.023 に答える
0

これをブロックしながら変更します:

while(s!=null) {
                    System.out.println(s);
                    String [] words = s.split(" ");
                    for(int i=0; i < s.length(); i++) {
                        String current = words[i];
                        if(current != null && current.startsWith("A") && current.endsWith("A")) {
                            n++;
                        }
                    }
                    s=r.readLine();
                }
于 2013-02-05T10:09:45.577 に答える
0

forループ内の単語の開始文字と終了文字をチェックする条件を追加

for(文字列 str : 単語) {

        if(str.length()==0) n--;
    }

http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#startsWith(java.lang.String)

http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#endsWith(java.lang.String)

于 2013-02-05T10:10:52.613 に答える
0

`次の条件を追加するだけです:

for(String str : words)
{
    if(str.length()==0){
     n--;
    }else if(str.startWith("A") && str.endsWith("A")){
       // increment the variable that counts words starting and ending with "A"
       // note this is case sensitive, 
       //so it will search for words that starts and ends with "A" (capital)
    }
}
于 2013-02-05T10:11:16.280 に答える