我正在编写一个霍夫曼树,我需要知道换行符和空格的频率。
使用Scanner
或InputStreamReader
,无论如何都要将包含换行符和空格的句子存储到单个字符串中?
如果我有以下代码,
public class HuffmanTreeApp {
public static void main(String[] args) throws IOException {
HuffTree theTree = new HuffTree();
System.out.print("sentence: ");
String get;
get = getString();
}
public static String getString() throws IOException {
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String s = br.readLine();
return s;
}
public static char getChar() throws IOException {
String s = getString();
return s.charAt(0);
}
public static int getInt() throws IOException {
String s = getString();
return Integer.parseInt(s);
}
}
如果我的输入是
"you are
good";
然后我想将包括换行符和空格在内的所有字符存储到这个字符串变量 get 中。所以在这种情况下,会有一个换行符和一个空格。
这可能吗?
答案 0 :(得分:2)
使用read(char [],offset,len)代替readLine(在找到新行字符然后丢弃它之前读取字符),而不是使用readLine,它也将捕获新行。
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
StringBuilder sb = new StringBuilder();
char [] buf = new char[0xff];
while(br.read(buf, 0, 0xff))
{
sb.append(new String(buf, "utf-8"));
}
String result = sb.toString();
答案 1 :(得分:1)
如果您正在阅读文件,则可以使用
Scanner scan = new Scanner(file);
scan.useDelimiter("\\Z");
String content = scan.next();
如果您从console
获取输入,则可以使用任何其他delimiter
来结束阅读。