我编写了一个程序,它接受用户输入的字符串。 (例如: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}
我对此比较陌生。有帮助吗?提前谢谢..
答案 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)。
希望有所帮助