Что не так с моим кодом Java? Он должен считать пробелы, но возвращает 0 - PullRequest
0 голосов
/ 31 октября 2011

Код скопирован ниже. Он должен возвращать количество пробелов, если символьная переменная l равна пробелу, но всегда возвращает 0.

Я проверил это с помощью букв, и это сработало, например, если я прошу его увеличивать, когда переменная l равна e, и вводить предложение с e in, он будет считать его. Но почему-то не пробелы.

import java.util.Scanner;

public class countspace {

    public static void main(String[] args) {            
        Scanner input = new Scanner(System.in);         
        System.out.println("Enter a sentence:");            
        String str = input.next();          
        System.out.println(wc(str));

    }

    public static int wc(String sentence) {

        int c = 0;          
        for (int i = 0; i < sentence.length(); i++) {           
            char l = sentence.charAt(i);                
            if (l == ' ') {                 
                c++;                    
            }               
        }           
        return c;           
    }       
}

Ответы [ 3 ]

3 голосов
/ 31 октября 2011

Scanner.next() (с разделителем по умолчанию) разбирает только первый пробел, поэтому str - это только первое слово предложения.

Из документов на Scanner:

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

2 голосов
/ 31 октября 2011

Используйте nextLine вместо. Вы также можете распечатать строку для отладки:

System.out.println(str);
1 голос
/ 31 октября 2011

Использовать строку str = input.nextLine();вместо String str = input.next(); Так вы должны поступить, чтобы получить следующую строку.Вы могли проверить, что str имеет неправильное значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...