为什么x.replaceAll("\\s+","")
正在删除第一个空格以及之后的所有内容?如果x
在执行a a
并打印replaceAll()
后最初为x
,则仅打印a
而不是aa
。
这是一个更大的项目的一部分,但出于测试目的,我在一个新的java主文件上单独尝试它,并且仍然做同样的事情这是完整的完整程序:
import java.util.*;
public class test {
public static void main (String args[]){
Scanner input = new Scanner(System.in);
String y = input.next();
String x = y.replaceAll("\\s+","");
System.out.println(x);
}
}
答案 0 :(得分:2)
默认情况下,Scanner使用一个或多个空格作为分隔符,next()
仅在分隔符之间返回一个标记。因此,如果foo bar baz
next()
之类的输入将返回foo
,则next()
的另一个调用将返回baz
而另一个baz
。
如果您想阅读整行,请使用nextLine()
但be careful when using it right after other nextXyz()
methods。
答案 1 :(得分:0)
好的。试试这个:
public static void main (String[] args) throws java.lang.Exception
{
Scanner input = new Scanner(System.in);
String y = input.nextLine();
String x = y.replaceAll("\\s+","");
System.out.println(x);
}
使用nextLine获取整个字符串。