0

我正在尝试计算字符串输入中出现的回车。我都试过了ScannerBufferedReader。使用Scanner,nextLine()不拾取回车。next()withScanner查找标记,例如输入中的空格,然后标记拆分输入。我希望将整个输入读取为单个输入。这可能意味着我不能使用扫描仪。

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

try {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String user_input = "";

System.out.println("Enter a string: ");

while (!user_input.contains("/done"))  {


user_input = reader.readLine();        //cannot be readLine because it only reads up to a carriage return; it does NOT return carriage return
                                       //*Sadly, if I use "reader.read();" then it tells me that user_input HAS to be int. user_input is a string input
String input = user_input;
char[] c = input.toCharArray();
int[] f = new int[114];

System.out.println("Rest of program, I convert input to ascii decimal and report the occurences of each char that was used");

}

catch  (IOException e) {
e.printStackTrace();
}
}
4

3 回答 3

0

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

JAVA 文档

java 中的 read() 读取任何字符(甚至\n\r\r\n)。从而逐个读取字符,并检查“回车”中读取的字符是否。

如果是,则增加计数器。

于 2013-04-03T04:56:34.793 回答
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”。

于 2013-04-03T04:56:42.537 回答
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");
于 2013-04-03T05:09:59.533 回答