Java 将字符串拆分为字符串数组不是';t工作不正常 for(int k=0;k

Java 将字符串拆分为字符串数组不是';t工作不正常 for(int k=0;k,java,string,split,Java,String,Split,当我尝试此代码时,dec2是一个字符串数组,包含: 41,31 11,21 42,41 12,22 当我尝试显示选项卡[0]时,我会得到第一个数字(在“,”之前),但是选项卡[1]返回一个数组索引OutofBoundsException,我不明白为什么,因为它应该包含第二个数字(在“,”之后)。尝试以下解决方案: for (int k = 0; k < dec2.length; k++) { System.out.println(dec2[k]); String[] tab

当我尝试此代码时,
dec2
是一个字符串数组,包含:

41,31
11,21
42,41
12,22

当我尝试显示
选项卡[0]
时,我会得到第一个数字(在“,”之前),但是
选项卡[1]
返回一个
数组索引OutofBoundsException
,我不明白为什么,因为它应该包含第二个数字(在“,”之后)。

尝试以下解决方案:

for (int k = 0; k < dec2.length; k++) {
    System.out.println(dec2[k]);
    String[] tab = dec2[k].split(",");
    System.out.println(tab[0]);
输出:

  for (String string : tab) {
            System.out.print(string+" ");
        }
如果您想使用
精确索引
尝试此方法,您将获得相同的输出:

41,31
41 31
11,21
11 21
42,41
42 41
12,22
12 22 
for(int k=0;k
没有例外

在按索引获取元素之前,您可以尝试选中
tab.length
,或者使用
forEach
循环:

41,31
41
31
11,21
11
21
42,41
42
41
12,22
12
22

Process finished with exit code 0
for(int k=0;k
听起来确实应该可以。你的
系统.out.println(dec2[k])
真的打印了给定的列表吗?似乎
不是一个实际的逗号字符串。你的代码没有问题。你在哪里访问
选项卡[1]
?是的,它正是打印的内容。我在打印选项卡[0]之后访问选项卡[1]。我建议进行调试。另外,添加stacktrace。虽然这确实有效,但我认为OP会发现一个潜在问题,例如格式不正确的输入。我觉得这会处理症状,而不是原因。当我像您那样打印它时,一切似乎都正常,但当我尝试访问选项卡的精确索引时,它似乎不起作用,我不明白为什么。@BBaldwinted有精确的索引,看起来很有效,请看上面的答案Tom,我的帖子包含答案,而不仅仅是“你的代码对我来说很好”。
 for(int k = 0 ; k < dec2.length ; k++){

        System.out.println(dec2[k]);
        String [] tab = dec2[k].split(",");
            System.out.print(tab[0]+" ");
            System.out.print(tab[1]);
        System.out.println();

    }
String[] dec2 = new String[] {"41,31", "11,21", "42,41", "12,22"};
for(int k = 0 ; k < dec2.length ; k++) {

    System.out.println(dec2[k]);
    String[] tab = dec2[k].split(",");


    System.out.println(tab[0]);
    System.out.println(tab[1]);
}
41,31
41
31
11,21
11
21
42,41
42
41
12,22
12
22

Process finished with exit code 0
for(int k = 0 ; k < dec2.length ; k++) {

    System.out.println(dec2[k]);
    String[] tab = dec2[k].split(",");

    for (String part : tab) {
        System.out.println(part);
    }
}