Java 在我的特定情况下,如何将此数组转换为列表?

Java 在我的特定情况下,如何将此数组转换为列表?,java,arrays,loops,for-loop,arraylist,Java,Arrays,Loops,For Loop,Arraylist,我迭代了一个数组B。已检查arrayListA中是否存在公共元素。然后删除这些元素并将A作为数组打印出来 但我的问题是如何将A(在我的程序中是System.out.println(crIss.get(m));)打印为数组列表(只是没有[]括号的元素列表),而不是数组? 这是我正在处理的完整代码: package issuetracking; import java.util.*; public class IssueTrackingObject { ArrayList<Str

我迭代了一个数组
B
。已检查arrayList
A
中是否存在公共元素。然后删除这些元素并将
A
作为数组打印出来

但我的问题是如何将
A
(在我的程序中是
System.out.println(crIss.get(m));
)打印为数组列表(只是没有
[]
括号的元素列表),而不是数组?

这是我正在处理的完整代码:

package issuetracking;

import java.util.*;

public class IssueTrackingObject {

    ArrayList<String> crIss = new ArrayList<String>();

    Scanner input = new Scanner(System.in);
    boolean crIss_bool;
    int numOfSolvedIss;
    private String[] solvedIss;

    //lets user create some issues and add them into an arrayList
    public void createIssue() {
        System.out.println("Enter 5 issues: ");

        for (int i = 0; i < 5; i++) {
            System.out.println("Issue " + (i + 1 + ": "));
            crIss_bool = crIss.add(input.nextLine());
        }

    }
//Let user mark some issues as solved (which are already in the list that the user has just created)

    public void solvedIssue() {
        System.out.println("How many solved issue you have(Must be less than 5): ");
        numOfSolvedIss = input.nextInt();

        solvedIss = new String[numOfSolvedIss];

        for (int k = 0; k < numOfSolvedIss; k++) {
            System.out.print("Enter solved issue(REMEMBER THAT THE SOLVED ISSUE MUST BE FROM ONE OF THEM YOU ALREADY HAVE CREATED)no. " + (k + 1) + ": ");

            solvedIss[k] = input.next();
        }

    }

    public void printUnsolvedIssue() {

for(int m=0; m<solvedIss.length;m++){
      crIss_bool = crIss.remove(solvedIss);

    System.out.println(crIss.get(m));   
}


    }


    public void printSolvedIssue() {
        System.out.println("");
        System.out.println("LIST OF SOLVED ISSUE:");

        for (int l = 0; l < solvedIss.length; l++) {
            System.out.printf("%s ", solvedIss[l]);
        }

    }

}

只需遍历
cris
并打印其中的每个项目,后跟所需的分隔符。在本例中,我将使用“,”分隔项目

public void printUnsolvedIssue(){

对于(int m=0;m您正在体验的打印行为是因为当您打印像
ArrayList
这样的对象时,Java调用类的
.toString()
方法。
ArrayList.toString()
继承自
AbstractCollection.toString()
可以找到的文档

我建议更改此行为,创建一个类似以下内容的sepreate Print函数:

public void printList(ArrayList<String> list)
{
     for(String str : list)
     {
          System.out.print(str+" ");
     }
     System.out.println();
}

请注意,此打印将在一行上打印列表中的每个元素,并用空格分隔。

有几种方法可以做到这一点。我将向您展示三种方法:

  • 将数据存储在
    字符串中
    并删除不需要的字符:

    String tmp = crIss.toString();
    tmp = tmp.substring(1, tmp.length() - 1);
    System.out.println(tmp);
    
  • 与上述方法类似,但使用
    替换

    String tmp = crIss.toString().replace('[', '\0').replace(']', '\0');
    System.out.println(tmp);
    
  • 遍历
    列表
    并将值存储在
    StringBuilder
    中:

    StringBuilder sb = new StringBuilder();
    for (String string : crIss) {
        sb.append(string).append(", ");
    }
    sb.remove(sb.length() - 2, sb.length());
    System.out.println(sb.toString());
    

  • 你的问题有点让人困惑。你是想从数组中创建一个
    ArrayList
    ?还是想迭代现有数组并打印出元素?循环遍历它并在新行上打印数组中的每个项。是否允许使用其他库,如Apache Commons?如果是,有一个很好的方法叫做
    j在
    StringUtils
    类中,oin
    将为您完成困难的部分。
    printUnovervedIssue
    看起来是错误的。
    m
    是一个在
    solvedIss
    中迭代的索引。
    m
    在从中删除元素后,将用作
    cris
    的索引。
    cris
    中的索引将l与
    solvedIss
    中的索引不匹配,因此结果是您将显示错误的元素。对于
    循环,您将需要第二个
    。@Riyana,您刚刚完全编辑了代码。一分钟前,它到处都使用数组-现在在一些地方使用
    ArrayList
    。它应该是什么?它已经对于一个不断变化的问题,我很难写出正确的答案。这不是迭代
    列表
    元素的好方法。请使用适当的迭代器或增强的
    for
    循环。顺便说一下,这不包括OP想要/需要的内容:如何将a打印为arrayList(只是一个没有[]括号的元素列表)而不是数组?将其翻译给您(和其他读者):OP需要打印
    “1,2,3”
    ,而不是打印
    “1,2,3”
    。您的代码打印
    “1\r\n2\r\n3\r\n
    。请原谅,size()方法在这种情况下不起作用。@Riyana请看我上面的评论。您有一个循环,循环遍历
    solvedIss
    ,但使用相同的索引来获取
    cris
    元素,这是错误的;这可能是您认为
    size()
    不起作用的原因。
    String tmp = crIss.toString();
    tmp = tmp.substring(1, tmp.length() - 1);
    System.out.println(tmp);
    
    String tmp = crIss.toString().replace('[', '\0').replace(']', '\0');
    System.out.println(tmp);
    
    StringBuilder sb = new StringBuilder();
    for (String string : crIss) {
        sb.append(string).append(", ");
    }
    sb.remove(sb.length() - 2, sb.length());
    System.out.println(sb.toString());