在java中使用read()方法计数

时间:2017-12-16 16:25:18

标签: java

public static void main(String[] args) throws Exception {
    System.out.println("Enter");

    BufferedReader input = new BufferedReader(new InputStreamReader(System.in));

    {
        int c;
        int count = 0;
        while ((c = input.read()) != -1) {

            System.out.println(+count);
            count++;

        }

    }
}

只使用read()方法我想打印每个char的计数,例如:如果我的输入:star然后输出应该是:9,但是当我尝试将计数放在循环外时我的程序永远不会到来out of loop并打印总计数值,readline(),next(),hasnext()方法不计算char by char所以它们给我一个错误的结果

1 个答案:

答案 0 :(得分:1)

while循环永不退出,因为read方法永远不会返回-1。只有当流到达文件末尾(EOF)时才会这样做。必须关闭BufferedReader使用的基础流(System.in)才能实现此目的。

我不确定你的要求是什么,但是如果你想从控制台读取一行输入并确定该行有多少个字符,你可以这样做:

Scanner sc = new Scanner(System.in);
String line = sc.readLine();
int charCount = line.length();
System.out.println("Characters count: " + charCount);