Arhn - архитектура программирования

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

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

    Scanner in = new Scanner(new FileReader( "/input5.txt"));

input5.txt — это текстовый файл, из которого я читаю ввод.

    BufferedReader is = new BufferedReader(new FileReader "/input5.txt"));
    int wordcount = 0;//counter

    int i = 0;//each character of input
    boolean hasChar = true;//flag for has Character
    while (in.hasNextLine()) { // while input exists
        String a = in.nextLine();//get next line
        while (i < a.length()) {// get each char

            if (a.charAt(i) == ' ') {// blank space does not count in word count
                hasChar = false;
            }// does not work
            else {

                wordcount++;// count words
            }
            i++;//get each char
        }
    }

    System.out.println("The word count is " + wordcount);// print wordcount
    System.out.println("");
    String line;// echo print the input file
    while ((line = is.readLine()) != null) {
        System.out.println("Echo print of the file: " + line);
    }
    in.close();

}

Это мой код.

Входной файл включает в себя это

Айвегфу24р;q0912j

129puehilhwueildgyuol

Вторая строка кода не учитывается при подсчете слов. Как я могу исправить это только с помощью циклов while?

Пожалуйста, не давайте мне ответ, а направляйте меня.

07.12.2014

  • Когда вы говорите, что это не считается, что именно вы имеете в виду? Какой результат вы получите, когда запустите свою программу? 07.12.2014
  • Вы хотите количество символов здесь. Верно?? 07.12.2014
  • Прочтите документацию к Scanner.next(). Это должно предоставить вам более простое решение. 07.12.2014
  • Вы должны сначала сбросить i после цикла while. Также игнорируются новые строки. Вы можете просто прочитать файл в одну строку и разделить его с помощью шаблона 07.12.2014
  • @nash_ag, нет, мне нужно не количество символов, а количество слов. 07.12.2014
  • Если вы переместите объявление i внутрь вашего цикла while, вы получите правильное число (я не скажу вам почему, так как вы не хотели ответа :)). Также обратите внимание, что, как указывали другие, вы считаете (не пробельные) символы, а не слова. Не уверен, что это было намерением. А также, как вы их считаете, результат будет больше, чем вы ожидали, на 2 (опять же, не скажу почему, но вы можете найти ответ, изучив документы для Scanner.nextLine). Если вам нужно количество слов, а не количество символов, Scanner.next() — ваш друг, как было предложено выше. 07.12.2014
  • Как указано ниже, вы можете использовать разделение, а не цикл. 07.12.2014
  • что делает scan.next? 07.12.2014

Ответы:


1

Вы не сбрасываете значение i, когда читаете новую строку. И именно поэтому во время следующей строки вы не входите во внутренний цикл while.

Таким образом, подсказка будет заключаться в том, что ваш цикл while должен сбрасывать значение i с помощью чего-то вроде:

while (in.hasNextLine()) {
    i = 0;
07.12.2014

2

Кратчайшим способом может быть разделение строки на основе пробела:

String[] a = in.nextLine().split("\\s+");//get next line
wordCount += a.length();
07.12.2014
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..