到目前为止,我在网上寻求帮助,没有任何对我有用。这就是我现在所拥有的,你能告诉我它有什么问题吗?
import java.util。*;
class employeeProgram{
public static void main(String[] args){
for (int count = 0; count < 1; ){
Scanner input = new Scanner(System.in);
ArrayList<String> employeeNames = new ArrayList<String>();
String commnd;
print("What would you like to do? (Add, Remove, List, Exit): ");
commnd = input.next();
if ("Add".equals(commnd)){
print("Enter the name of the employee you'd like to add to the list: ");
employeeNames.add(input.next());
} else if ("Remove".equals(commnd)){
print("Enter the name of the employee you'd like to remove from the list: ");
employeeNames.remove(input.next());
} else if ("List".equals(commnd)){
for (int j = 0; j < employeeNames.size(); j++){
println(employeeNames.get(j));
println(j);
}
//println(employeeNames);
} else if ("Exit".equals(commnd)){
input.close();
break;
} else {
println("Invalid command.");
}
}
}
public static void println(Object x){
System.out.println(x);
}
public static void print(Object x){
System.out.print(x);
}
}
for循环没有开始,我知道的很多,因为“println(j)”也没有工作。当我尝试我已经注释掉的部分时,我从打字列表中得到的只是“[]”而没有别的。我是初学者,这是我使用ArrayLists的第一个程序,所以提前感谢任何决定帮助我的人:)
答案 0 :(得分:2)
在第一个employeeNames
循环之外定义for
列表。每次迭代循环都会重新初始化ArrayList。
答案 1 :(得分:0)
for(int count = 0; count&lt; 1; count ++)
答案 2 :(得分:0)
你需要定义你的循环的arraylist outode,否则每次迭代都会创建一个新的arrayList,之前对arraylist的更改是垃圾收集。
import java.util.*;
class employeeProgram{
public static void main(String[] args){
ArrayList<String> employeeNames = new ArrayList<String>();
for (int count = 0; count < 1; ){
Scanner input = new Scanner(System.in);
String commnd;
print("What would you like to do? (Add, Remove, List, Exit): ");
commnd = input.next();
if ("Add".equals(commnd)){
print("Enter the name of the employee you'd like to add to the list: ");
employeeNames.add(input.next());
} else if ("Remove".equals(commnd)){
print("Enter the name of the employee you'd like to remove from the list: ");
employeeNames.remove(input.next());
} else if ("List".equals(commnd)){
for (int j = 0; j < employeeNames.size(); j++){
println(employeeNames.get(j));
println(j);
}
//println(employeeNames);
} else if ("Exit".equals(commnd)){
input.close();
break;
} else {
println("Invalid command.");
}
}
}
public static void println(Object x){
System.out.println(x);
}
public static void print(Object x){
System.out.print(x);
}
}
此外,我将对此程序进行一些基本更改,首先 - 应该使用for循环,您知道将执行多少次迭代。在你的情况下,while循环(或者更好的仍然是do-while循环)更适合。
最后创建一个衬里函数来封装system.out.print和println似乎比必要的更多努力。
答案 3 :(得分:0)
每次提出问题时,您都在创建一个新的ArrayList。在初始循环之外创建它。
ArrayList<String> employeeNames = new ArrayList<String>();
答案 4 :(得分:0)
我会尝试别的东西而不是for循环:
虽然你在这里可能在技术上有用,但是...循环用于确定性过程。在这里,您将它用作无限循环,您希望稍后强制中断。这很危险,可能会导致错误。
我会改变这个:
for (int count = 0; count < 1; ){
到此:
bool done = false;
while(!done) {
然后,稍后,当你想爆发时。发出这一行:
done = true;