ArrayList不打印所有元素

时间:2014-11-27 16:16:16

标签: java arraylist

我编写了一个程序,它接受用户输入的字符串。 (例如:175-24-56-5) 该程序获取该字符串并将其放入ArrayList中。我遇到的问题是,当我尝试打印ArrayList时,不打印最后一个数字(应该在ArrayList中)。

这是我的方法代码:

    public void dc(String txt) {
    ArrayList<String> unkey = new ArrayList<String>();
    int l = txt.length();
    int x = 0;
    String xx = "";
    String k = "";
    for (int j = l; j > 0; j--) {
        xx = Character.toString(txt.charAt(x));
        System.out.println(xx);
        if (xx.equals("-")) {
            unkey.add(k);
            k = "";
        } else {
            k += xx;
        }
        x++;
    }
    System.out.println(l);
    System.out.println(unkey);
    System.out.println(x);
}

它应该打印

{175, 24, 56, 5}

但它只打印

{175, 24, 56}

我对此比较陌生。有帮助吗?提前谢谢..

6 个答案:

答案 0 :(得分:2)

你的问题是for for循环条件,你缺少第0个元素。所以你的for循环条件应该是>= 0并以l-1

开头

您可以使用以下内容代替逐字符解析字符串:

String[] numbers = txt.split("-");//Using List<String> stringList = Arrays.asList(number); you can convert to list.
for (int i =0; i< numbers.length(); i++) {
    System.out.println(numbers[i]);
}

答案 1 :(得分:1)

从l-1开始,结束&gt; = 0。字符串从索引0到长度为1

答案 2 :(得分:0)

数组以索引0开头,因此你的for循环必须是:

for(int j = l; j&gt; = 0; j--){

虽然您可以使用“拆分”来简化整个事情:

String[] nums = txt.split("-");

ArrayList<String> unkey = Arrays.asList(nums);

答案 3 :(得分:0)

>更改为>=,这样您就不会遗漏第一个元素:

for (int j = l; j >= 0; j--)

答案 4 :(得分:0)

添加

unkey.add(k);
循环后

只有在现在找到' - '时才会添加数字。

答案 5 :(得分:0)

for (int j = l; j > 0; j--)

此行应更改为

for(int j=l-1; j>=0; j--)

对于您的具体示例(175-24-56-5),存储的索引顺序为(0-1-2-3)而不是(1-2-3-4)。

希望有所帮助