因为String.next是读取是读取一个字符串,遇到空白符之前就结束,在你的例子中,就是str读取的就是一个"i"字符串就是结束了,所以count的值就是0.如果需要读取整行数据,用nextLine()方法
next()方法遇到空格就不读取了,所以你的str里面只保存了一个"i"而已
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));
String str = buffer.readLine();
int count=0;
for(int i=0;i<str.length();i++){
if(str.charAt(i)==' '){
count++;
}
}
System.out.println(count);
}
}
觉得有用的话采纳一下哈
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
int count = 0;
for (int i =0;i<s.length();++i){
if(s.charAt(i) == ' '){
count++;
}
}
System.out.println(count);
}
next读取的是一个。
使用 s.nextLine() 函数。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
String str = s.nextLine();
int count = 0;
for (int i=0; i<str.length(); i++) {
if (str.charAt(i) == ' ') {
count++;
}
}
System.out.println(count);
}
}
nextLine()方法读取一行文本,以回车键为结束标志,以上参考《Java语言程序设计 基础篇》(原书第8版)21页 表2-1Scanner对象的方法