假设我从扫描仪获得以下输入:"5B1 2B2 9B3 1R4 3R5 8R6 10R7"
我希望将数据保存在与此类似的内容中:
array[0] = {5,B,1}
array[1] = {2,B,2}
注意:我需要角色左侧的数字保存为全部
示例:我需要将10R7
保存为{10,R,7}
而不是{1,0,R,7}
使用此:
String input = scanner.nextLine();
String[] nodes = input.split(" ");
我能够实现包含{5B1,3B2}等的数组。
修改
我尝试了这种方法(WORKS):
String[][] aa = new String[nodes.length][];
for(int i =0; i<nodes.length; i++ ){
aa[i] = nodes[i].split("((?<=[a-zA-Z])(?=[0-9]))|((?<=[0-9])(?=[a-zA-Z]))");
}
如果您立即打印,则会发生这种情况:
[Ljava.lang.String;@55f96302
[Ljava.lang.String;@3d4eac69
[Ljava.lang.String;@42a57993
[Ljava.lang.String;@75b84c92
[Ljava.lang.String;@6bc7c054
[Ljava.lang.String;@232204a1
[Ljava.lang.String;@4aa298b7
如果我尝试使用以下方法打印,则只会出现上述问题:
System.out.println(aa[i]);
还有另一种打印方式,但我不需要打印它。
答案 0 :(得分:1)
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.nextLine(); // Read 5B1 2B2 9B3 1R4 3R5 8R6 10R7 from user
String[] sArr = str.split(" "); // break into array of string ["5B1", "2B2", .... "10R7"]
char[][] cArr = new char[sArr.length][]; // create a 2D char array to save the string array
int idx = 0;
for(String s : sArr){
cArr[idx++] = s.toCharArray(); // [['5','B','1'], ['2','B','2'], ...]
}
//Print the array
for(char[] c1 : cArr){
for(char c2: c1){
System.out.print(c2 + " ");
}
System.out.println();
}
}
答案 1 :(得分:1)
您可以使用拆分\\s
来获取您的文字,然后您可以将s.toCharArray()
用于char数组:
String str = "5B1 2B2 9B3 1R4 3R5 8R6 10R7";
List<String[]> list = new ArrayList<>();
String spl[] = str.split("\\s+");
for (String s : spl) {
String sp[] = s.replaceAll("([a-zA-Z]+)", "$1-").replaceAll("([0-9]+)", "$1-").split("-");
list.add(sp);
}
打印阵列:
list.forEach((rs) -> {
System.out.println(Arrays.toString(rs));
});
这可以为您提供:
[5, B, 1]
[2, B, 2]
[9, B, 3]
[1, R, 4]
[3, R, 5]
[8, R, 6]
[10, R, 7]
答案 2 :(得分:1)
好吧,经过一些游戏,我发现了一个修复:
对于任何可能在此处有类似内容的人来说:
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
String[] nodes = input.split(" ");
String[][] aa = new String[nodes.length][];
for (int i = 0; i < nodes.length; i++) {
aa[i] = nodes[i].split("((?<=[a-zA-Z])(?=[0-9]))|((?<=[0-9])(?=[a-zA-Z]))");
}
答案 3 :(得分:0)
以下是样本:
public static void main(String args[]) {
String s = "5B1 2B2 9B3 1R4 3R5 8R6 10R7";
// split input string by spaces first
// convert every chunk into char array
List<char[]> result =
Arrays.asList(s.split(" ")).stream().map(String::toCharArray).collect(Collectors.toList());
for (char[] r : result) {
System.out.println(Arrays.toString(r));
}
}
输出:
[5, B, 1]
[2, B, 2]
[9, B, 3]
[1, R, 4]
[3, R, 5]
[8, R, 6]
[1, 0, R, 7]
答案 4 :(得分:0)
只需拆分字符串
String str = "5B1 2B2 9B3 1R4 3R5 8R6 10R7"
String[] parts = str.split(" ");
for (int i = 0; i < parts.length; i++) {
System.out.println(parts[i]);
}