计算回车,Java

时间:2013-04-03 04:50:55

标签: java java.util.scanner bufferedreader arrays

我正在尝试计算字符串输入中的回车次数。我尝试了ScannerBufferedReader。使用Scanner时,nextLine()无法获取回车。带next()的{​​{1}}查找令牌,例如输入中的空格,以及令牌将输入分开。我希望将整个输入作为单个输入读取。这可能意味着我无法使用Scanner。

使用Scanner时,BufferedReader会读取回车符,但不会在输入中返回回车符。如果我使用“reader.read();”然后它告诉我变量user_input是int。 user_input应该是一个可以有整数的字符串输入,但也可能不是。唯一的事情是程序将继续,直到输入包含“/ done”。如果有人能指出我正确的方向,我将不胜感激!

readLine()

3 个答案:

答案 0 :(得分:0)

逐个读取字符,直到使用read()方法遇到EOF。

<强> JAVA DOCS

java中的

read()读取任何字符(甚至 \ n \ r \ r \ n )。这样一个一个地读取字符并检查字符是否在“回车”中读取。

如果是,则增加计数器。

答案 1 :(得分:0)

有一个名为StringUtils的库可以很容易地做到这一点。它有一个名为countMatches的方法。这是你如何使用它。但首先,您应该将输入组合成一个字符串:

package com.sandbox;

import org.apache.commons.lang.StringUtils;

public class Sandbox2 {

    public static void main(String[] args) {
        String allInput = "this\nis\na\n\nfew\nlines\nasdf";
        System.out.println(StringUtils.countMatches(allInput, "\n"));
    }

}

输出“6”。

答案 2 :(得分:0)

这是你要找的吗?

Scanner scanner = new Scanner(System.in);
scanner.useDelimiter("\\z"); //"\\z" means end of input
String input = scanner.next();

编辑:如果您希望"\n"显示为"CR",请执行以下操作:

input.replaceAll("\\n", "CR");