Java,使用string.split拆分字符串,分隔符两边都有空格

Java,使用string.split拆分字符串,分隔符两边都有空格,java,string,split,Java,String,Split,所以我有下面的代码。我输入“string1:string2:string3:string4”。我希望得到输出“string2”,但我得到一个越界异常错误 我想用空格冒号空格分隔MasterArray的第一个元素中包含的字符串,但我不知道在这种情况下,您将如何操作 while(true){ MasterArray[InputNumber] = scan.next(); String parts[] = MasterArray[InputNumber].split(":");

所以我有下面的代码。我输入
“string1:string2:string3:string4”
。我希望得到输出
“string2”
,但我得到一个越界异常错误

我想用空格冒号空格分隔
MasterArray
的第一个元素中包含的字符串,但我不知道在这种情况下,您将如何操作

while(true){
    MasterArray[InputNumber] = scan.next(); 

    String parts[] = MasterArray[InputNumber].split(":");

    System.out.print(parts[1]);

    }
将scan.next()更改为scan.nextLine()它将适用于您

while(true){ MasterArray[InputNumber]=scan.nextLine()


scan.next()将一直读取到输入字符串中的第一个间隔符。

另一种方法是使用StringTokenizer

    inputStr = user.next();
    int index = 0;
    StringTokenizer tokens = new StringTokenizer(inputStr, ":");
    while(tokens.hasMoreTokens()){

        if(index == 1){
            System.out.println(tokens.nextToken().toString());
            break;
        }
        tokens.nextToken();
        index++;        
    }

这样,您就可以只获取第二个字符串,避免创建不需要的子字符串数组。

MasterArray[InputNumber]=scan.nextLine()
@SanketMakani哇,我觉得自己有点迟钝,谢谢你:Java声明变量名必须以小写字母开头,所以
masterArray
inputNumber
——如果
Scanner
正在读取
系统以外的任何内容。在
(甚至在那时),您需要将循环更改为
,而(scan.hasnetline())
——建议将数组声明与类型放在一起,因此将
String parts[]
替换为
String[]parts
,以更准确地指示
parts
String[]
类型的变量。
    inputStr = user.next();
    int index = 0;
    StringTokenizer tokens = new StringTokenizer(inputStr, ":");
    while(tokens.hasMoreTokens()){

        if(index == 1){
            System.out.println(tokens.nextToken().toString());
            break;
        }
        tokens.nextToken();
        index++;        
    }