Java 拆分方法正在拆分为单个字符串
我有一个小问题: 我有一个程序,可以用空格分割字符串(只有一个ws),但是当我将该值赋给字符串数组时,它里面只有一个对象。(我只能打印“0”索引)。 代码如下:Java 拆分方法正在拆分为单个字符串,java,string,split,java.util.scanner,Java,String,Split,Java.util.scanner,我有一个小问题: 我有一个程序,可以用空格分割字符串(只有一个ws),但是当我将该值赋给字符串数组时,它里面只有一个对象。(我只能打印“0”索引)。 代码如下: public void mainLoop() { Scanner sc = new Scanner(System.in); String parse = "#start"; while (!parse.equals("#stop") || !parse.isEmpty()) {
public void mainLoop() {
Scanner sc = new Scanner(System.in);
String parse = "#start";
while (!parse.equals("#stop") || !parse.isEmpty()) {
parse = sc.next();
String[] line = parse.split("[ ]");
System.out.println(line[0]);
}
}
通过方法“main”从实例调用“mainLoop”。默认情况下Scanner\next
使用空格分隔输入。您可以使用nextLine
从扫描仪读取数据,而无需使用此分隔符模式
parse = sc.nextLine();
报告中提到的前几点仍然有效
while (!parse.equals("#stop") && !parse.isEmpty()) {
parse = sc.nextLine();
String[] line = parse.split("\\s");
System.out.println(Arrays.toString(line));
}
如果你想用一个空格分开,为什么不这样做呢
String[] line = parse.split(" ");
当您在扫描仪上调用
next
时,它将从输入返回下一个令牌。例如,如果用户将写入文本
foo bar
第一次调用next
将返回“foo”
,下一次调用next
将返回“bar”
可以考虑使用<代码> NeXLINE 而不是<代码>下< /COD>如果要在表单中获得字符串<代码>“Foobar”(整行).< /P>
此外,您不必在
[]
中放置空格,因此您可以使用拆分(“[]”
或使用字符类\s
,它表示空格拆分(“\\s”)
另一个你似乎遇到的问题是
while( !condition1 || !condition2 )
如果您想说循环应该继续,直到满足任何一个条件,那么您应该将它们写在表单中
while( !(condition1 || condition2) )
或使用
用[]分隔一个空格似乎是有意的,不过:“我有一个程序可以用空格分隔一个字符串(只有一个ws)”尝试在
\s
上拆分,如下所示:parse.split(\\s”)
模式应该可以工作。对于哪个输入String
,这会给您带来问题吗?请您写一个input
的例子,预期的result
?@SeniorJD输入应该是:“你好,世界!”结果应该是:0:'hello'1:'world!'但我的结果是0:“你好\n世界!”(数字是数组中对象的索引)。@CODER即使您输入#stop
而不是|
操作符,您的程序也不会结束
while( !condition1 && !condition2 )