我已经迭代了一个数组B
。检查 arrayList A
中是否存在公共(public)元素。然后删除这些元素并将 A
作为数组打印出来。
但我的问题是如何打印 A
(在我的程序中它是 System.out.println(crIss.get(m));
)作为 arrayList (只是不带 []
括号的元素列表)而不是数组?
这是我正在处理的完整代码:
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]);
}
}
}
主类:
package issuetracking;
import java.util.*;
public class IssueTracking {
static Scanner input = new Scanner(System.in);
public static void main(String[] args) {
IssueTrackingObject its = new IssueTrackingObject();
System.out.println(" WELCOME TO ISSUE TRACKING SYSTEM!\n\n");
System.out.println("Choose from menu: ");
System.out.println("1. Create new issue\n2. Mark issue(s) as solved\n"
+ "3. View solved issue(s)\n4. View unsolved issue(s)");
System.out.println("Enter you choise:");
//String userChoise = input.next();
//switch-case
while (true) {
String userChoise = input.next();
switch (userChoise) {
case "1":
//System.out.println("Enter 5 issues: ");
//call appropriate issue
its.createIssue();
break;
case "2":
//System.out.println("Mark solved issues (You must enter at least one issue): ");
//call appropriate issue
its.solvedIssue();
break;
case "3":
System.out.println("Solved issue: ");
//call appropriate method
its.printSolvedIssue();
break;
case "4":
System.out.println("Usolved issue: ");
//call appropriate issue
its.printUnsolvedIssue();
break;
default:
System.out.println("Invalid input");
break;
}
}
}
}
最佳答案
您所经历的打印行为是因为当您打印ArrayList
之类的对象时,Java会调用该类的.toString()
方法。 ArrayList.toString()
继承自 AbstractCollection.toString()
,其文档可以在 here 找到。 .
我对更改此行为的建议是创建一个类似于以下内容的单独的打印函数:
public void printList(ArrayList<String> list)
{
for(String str : list)
{
System.out.print(str+" ");
}
System.out.println();
}
然后调用此函数来代替打印语句:
printList(crIss);
请注意,此打印会将列表中的每个元素打印在一行上,并用空格分隔。
关于java - 在我的具体情况下,如何将此数组转换为列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27950736/