将ArrayList中的整数转换为字符串

5

我正在尝试将一个整数arraylist反向转换为字符串。例如(1,2,3,4)转换为"4321"。

然而,由于基本数据类型错误(基本上是为什么你给我一个arraylist去做一个数组的事情),我无法使我的代码工作。我的代码目前是:

  public String toString() {
        int n = arrList.size();
        if (n == 0)
            return "0";

        for (int i = arrList.size(); i > 0; i--);
        int nums= arrList[i];
        char myChar = (char) (nums+ (int) '0');
        String result = myChar.toString(arrList);

        return result;
}
4个回答

6
  • Your loop had the wrong range and it didn't do anything, since you terminated it with ;.
  • In addition, arrList[i] is the way to access an element of an array. To access an element of an ArrayList you use arrList.get(i).
  • Finally, you should accumulate the characters / digits somewhere before converting them to a String. I suggest a StringBuilder.

    StringBuilder sb = new StringBuilder();
    for (int i = arrList.size() - 1; i >= 0; i--) {
      int num = arrList.get(i);
      sb.append(num);
    }
    String result = sb.toString();
    

1
你有许多问题。首先,你应该在 for 循环后删除 ;
其次,你没有连接结果,只保存了最后一个值。
第三,你应该从最后一个索引循环,即 arrList.size() - 1
第四,需要注意的是,位置为0的元素也应被计算在内,因此你应该将条件更改为 i >= 0
最后,使用方法get来访问arraylist元素:arrList.get(i)
现在,既然你明白了问题所在,我想借此机会向你介绍一个更好的解决方案——Java 8:
Collections.reverse(arrList);
String listString = arrList.stream().map(Object::toString)
                    .collect(Collectors.joining(""));

我认为初始列表应该在最后被反转。 - Alex Salauyou
@SashaSalauyou 如果需要的话,OP可以很容易地完成这个任务。我会让他自己决定。 - Maroun

0
public String toString() {
        int n = arrList.size();
        if (n == 0)
            return "0";

        String str = "" ; 
        for (int i = arrList.size()-1; i > 0; i--){
        int nums= arrList.get(i);
        str+= nums ; 
        }


        return str;
}

0
一个ListIterator也可以使用 - 如果你不想要索引。
ArrayList<Integer> integerList = new ArrayList<Integer>();
StringBuilder sb = new StringBuilder();
ListIterator<Integer> it = integerList.listIterator(integerList.size());


while(it.hasPrevious())
{
    sb.append(Integer.toString(it.previous()));
}

String answer = sb.toString();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接