这个是求输入的字符串当中有几个空格 可我不管输入多少 输出的都是count最初赋的值 为什么累加不了

img


这个是求输入的字符串当中有几个空格 可我不管输入多少 输出的都是count最初赋的值 为什么累加不了

因为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对象的方法