#java #methods #for-loop
#java #методы #for-цикл
Вопрос:
Код скопирован ниже. Он должен возвращать количество пробелов, если символьная переменная l равна пробелу, но всегда возвращает 0.
Я протестировал его с буквами, и это сработало, например, если я прошу его увеличить, когда переменная l равна e, и введите предложение с e в, оно будет считать. Но по какой-то причине не пробелы.
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;
}
}
Комментарии:
1. просто в качестве отступа вы можете использовать предложение. toCharArray() для преобразования строки в символ[] вместо получения отдельных символов, как вы это сделали.
Ответ №1:
Scanner.next()
(с разделителем по умолчанию) разбирается только до первого пробела — так str
что это только первое слово предложения.
Из документации для Scanner
:
Сканер разбивает свой ввод на токены, используя шаблон разделителя, который по умолчанию соответствует пробелам.
Ответ №2:
Используйте nextLine
вместо этого. Вы также можете распечатать строку для отладки:
System.out.println(str);
Комментарии:
1. Ах, благодаря этому и другому комментарию от Джона Скита, я понял это сейчас, и это работает. Спасибо.
Ответ №3:
Используйте String str = input.nextLine()
; вместо String str = input.next();
Это то, что вы должны сделать, чтобы получить следующую строку. Вы могли бы проверить, что str имеет неправильное значение.