【发布时间】:2015-03-13 02:19:21
【问题描述】:
我已经遍历了一个数组 B。检查 arrayList A 中是否有共同的元素。然后删除这些元素并将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吗?还是要迭代现有数组并打印出元素? -
循环遍历并在新行上打印数组中的每个项目。
-
是否允许使用其他库,例如 Apache Commons?如果是这样,
StringUtils类中有一个名为join的好方法,它将为您完成最困难的部分。 -
printUnsolvedIssue看起来不对。m是一个遍历solvedIss的索引。但是,在您从中删除一个元素之后,您使用m作为crIss的索引。crIss中的索引与solvedIss中的索引不匹配,因此结果是您将显示错误的元素。您将需要第二个for循环。 -
@Riyana,您刚刚完全编辑了代码。一分钟前,它到处都在使用数组——现在它在一些地方使用
ArrayList。它应该是哪个?对于一个不断变化的问题,很难写出正确的答案。
标签: java arrays loops for-loop arraylist