2016-09-26 97 views
0

我有这样的代码,它允许用户输入一个字符串,其中由字符( - )和输入的字符串分隔的两部分将被拆分成两个不同的部分,然后输出屏幕上的两个部分用逗号分隔。如何拆分具有空格的字符串

public class Test 
{ 
public static void main(String[] args) 
{ 
    java.util.Scanner scanner = new java.util.Scanner(System.in); 

    String part = ""; 

    System.out.println("Please enter the 2-part string to be split: "); 
    part = scanner.next(); 

    String[] parts = part.split("-"); 
    String part1 = parts[0]; 
    String part2 = parts[1]; 

    System.out.print("," + part1 + "," + part2); 

    scanner.close(); 
} 

} 

现在让我们说用户照耀处

AAA-222

带来的将是

AAA,222

如果我想进入有空格的字符串,这样

我热爱你,我恨你

我如何拆分(我爱你)和(我恨你)? 我得到这个错误与上面的代码。

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1 
    at tutorial.Test.main(test.java:17) 

PS。拆分部分应该包含空格。

+1

*当上面的代码*:读取错误有助于查找其原因时,出现错误。使用调试器也有帮助。同时阅读Scanner的javadoc,尤其是它的next()方法。 –

+0

你会得到什么错误? –

+0

我编辑了帖子。这个错误 “在线程中的异常”main“java.lang.ArrayIndexOutOfBoundsException:1 at tutorial.Test.main(test.java:17)” –

回答

7

而不是使用

part = scanner.next(); 

https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#next()

使用

part = scanner.nextLine(); 

https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#nextLine()

未来的,只读取到令牌结束。 nextLine读取直到用户进入下一行(按回车键)

+0

谢谢,这正是我一直在寻找的。我会尽我所能接受答案。 –

+0

我可以问一下你的意思是“到令牌的结尾”吗? –

+1

根据我提供的链接“一个完整的标记之前和之后是与分隔符模式相匹配的输入”默认分隔符模式包含空格。所以任何单词都由一个分隔符模式分隔。 – jkozlowski

相关问题