Число, которое я пытаюсь распечатать, продолжает добавляться в следующей строке - PullRequest
0 голосов
/ 21 марта 2020

Я хочу прочитать несколько строк из файла текстового документа и записать количество гласных из каждой строки в другом текстовом документе.

"vlez.txt" - это входной файл, а "destinacija.txt " - это выходной файл.

Ввод -> Пример вывода:

Hello
World
До свидания

В выходном файле результат будет:

2 (2 гласных от Hello)
3 (1 гласный от World + previous)
7 (Вы получаете точку ..)

Мой код:

package prvaZad;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
public class prvaZadaca {

    public static void main(String[] args) throws IOException {

        BufferedReader in = new BufferedReader(new FileReader("vlez.txt"));
        PrintWriter out = new PrintWriter(new FileWriter("destinacija.txt"));
        StringBuilder sb = new StringBuilder();

        String line;
        int number = 0;
        while ((line = in.readLine()) != null) {

            sb.append(line);
            sb.append('\n');

            String lc = sb.toString().toLowerCase();
            for (int i=0; i<lc.length(); i++) {
                char ch = lc.charAt(i);

                if ("aeiouy".indexOf(ch) > -1) {
                    number++;
                }
            }
            out.print(number);
            out.print('\n');
            number = 0;
        }       

        if (in != null) 
            in.close();

        if (out != null)
            out.close();

        System.out.println(number);
    }
}

Ответы [ 2 ]

0 голосов
/ 21 марта 2020

Этот код может помочь вам

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package javaapplication11;

import java.util.Timer;

/**
 *
 * @author Sem-6-INGENIERIAINDU
 */
public class JavaApplication11 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        String word = "Hello World Goodbye";
        String[] container = word.split(" ");
        for (String container1 : container) {
            System.err.println("The word:" + container1 + " has " + (container1.replaceAll("[^aeiou]", "")).length());
        }
    }

}

выполнить: Слово: Привет имеет 2 Слово: Мир имеет 1 Слово: До свидания есть 3 СТРОИТЬ УСПЕШНО (общее время: 0 секунд)

0 голосов
/ 21 марта 2020

Проблема в том, что вы продолжаете добавлять строки к StringBuilder, другими словами, он возобновляет счет с 0.

Это можно исправить, "очистив" StringBuilder перед следующей итерацией :

out.print(number);
out.print("\n")
number = 0;
sb = new StringBuilder(); // a new empty StringBuilder

...