如何在Java中将String行插入String数组中

时间:2013-05-16 18:25:34

标签: java arrays string

我在从用户那里获取String输入时遇到一些困难,如下面的代码所示,将标记分开并将它们推入字符串数组中。在我尝试运行positions.split(“”)之后,输入被正确记录; dataString数组不接受分隔的字符串。我要做的是取一组数字,例如:1 3 4然后将它们分成单独的标记,然后实例化一个长度为3的数字串字符串数组,并在每个数字中插入数字1,3和4位置。

Scanner input = new Scanner(System.in);
String[] dataString;
String positions;

...

System.out.print("Hand:" + currentHand);
input.nextLine();
System.out.print("\nEnter positions of cards to keep (e.g. 1 4 5 ):");
positions=input.nextLine();
dataString = positions.split(" ");

if (dataString.length > 5) {
    System.out.print("You can hold a maximum of 5 cards");
    positions = input.nextLine();
    dataString = positions.split(" ");
}

input.close();

2 个答案:

答案 0 :(得分:1)

似乎可能是How to split a String by space

的副本

另一方面,您应该考虑使用循环来检查dataString的长度。 :)

while (dataString.length > 5){
   System.out.print("You can hold a maximum of 5 cards");
   positions = input.nextLine();
   dataString = positions.split("\\s+");
}

答案 1 :(得分:0)

  

dataString数组不接受分隔的字符串。

是的,确实如此。 .split(" ")String "1 2 3"完全相同。

调试代码。你在哪里:

dataString = positions.split(" ");

把:

System.out.println("Positions entered: \""+positions+"\"");
dataString = positions.split(" ");
System.out.println("dataString obtained: "+java.util.Arrays.toString(dataString));

然后,如果您输入1 2 3,您将获得输出:

Positions entered: "1 2 3"
dataString obtained: [1, 2, 3]

你会看到,分割String没有问题。

更新

您可能遇到重复空格的问题。在这种情况下,您可以使用以下方法删除它们:

dataString = positions.replaceAll("\\s+", " ").trim().split(" ");

而不是:

dataString = positions.split(" ");

在拆分之前,应将" 1 2 3 "之类的字符串转换为"1 2 3"