我正在尝试遍历ArrayList,逐步显示元素,根据用户输入显示下一个元素或前一个元素。这是我到目前为止的示例代码:
import java.util.ArrayList;
import java.util.Scanner;
public class ProbaCuLista {
public static void main(String[] args) {
ArrayList<String> animals = new ArrayList<String>();
animals.add("fox");
animals.add("cat");
animals.add("dog");
animals.add("rabbit");
for (String animal : animals) {
System.out.println(animal);
}
Scanner input2 = new Scanner(System.in);
int test = input2.nextInt();
for (int i = 0; i < animals.size(); i++) {
if (test == 2) {
for (int j = 0; j < i; j++) {
System.out.println(animals.get(j));
j++;
}
}
}
}
}
目前,它在for-each循环中核心地输出元素,但是输出我的下一部分代码:fox,fox,fox,dog。 我希望在用户写入2以打印第一个元素之后,用户再次按下它会打印下一个元素,依此类推,直到列表末尾。
答案 0 :(得分:2)
如果我已经正确地实现了这项任务,你就会有一个动物列表,并希望每次用户按2
时逐步输出一个元素:
try (Scanner scan = new Scanner(System.in)) {
int i = 0;
while (i < animals.size()) {
if (scan.nextInt() == 2)
System.out.println(animals.get(i++));
}
}
答案 1 :(得分:0)
这部分代码没有做你想要的。我评论了这些线条,向您展示它的作用:
for (int i = 0; i < animals.size(); i++) { //for each animal
if (test == 2) { //check if test equals 2
for (int j = 0; j < i; j++) { //for each animal until the selected one from the first loop
System.out.println(animals.get(j)); //print is name
j++; //increase j
}
}
}
首先为什么每次都要进行测试?它的值在循环期间不会改变,你可以先检查一次,然后只检查一次。
你的第一个循环遍历所有动物。
第二个循环从开始经过动物直到从第一个循环中选择的动物。然后显示它的名字。在这个循环中你增加j,但它已经在循环的声明中完成了。所以你经常增加j。
告诉你发生了什么:首先i = 0.然后j = 0,所以j不低于循环停止。第二个i = 1,然后j = 0,所以你打印“狐狸”。然后你增加j并且循环增加j - > J = 2。所以j不低于循环停止。第三个i = 2,j = 0所以你打印“狐狸”。然后你增加j并且循环增加j - > J = 2。所以j不低于循环停止。第四个i = 3,j = 0所以你打印“狐狸”。然后你增加j并且循环增加j - > J = 2。 j低于i所以你再次循环。你打印“狗”。然后你增加j并且循环增加j - > J = 4。所以j不低于循环停止。通过我的循环停止。
我认为用户输入的“代码”是0 - &gt;退出,1-&gt; prev,2-&gt; next。
public class ProbaCuLista {
public static void main(String[] args) {
ArrayList<String> animals = new ArrayList<String>();
Scanner scan = new Scanner(System.in);
int userInput = 2;
int index = 0;
animals.add("fox");
animals.add("cat");
animals.add("dog");
animals.add("rabbit");
for (String animal : animals) {
System.out.println(animal);
}
while(userInput != 0) {
userInput = scan.nextInt();
if(userInput == 2) {
System.out.println(animals.get(index);
if(index<animals.size()) {
index++;
}
}
if(userInput == 1) {
System.out.println(animals.get(index);
if(index>1) {
index--;
}
}
}
}
}
注意:这是一个解决方案,但有很多,当然还有一些更好的
答案 2 :(得分:0)
我认为以下符合您的要求。
import java.util.ArrayList; import java.util.Scanner;
public class ProbaCuLista {
public static void main(String[] args) {
ArrayList<String> animals = new ArrayList<String>();
animals.add("fox");
animals.add("cat");
animals.add("dog");
animals.add("rabbit");
for (String animal : animals) {
System.out.println(animal);
}
Scanner input2 = new Scanner(System.in);
int test;
int i=0;
while(true){
System.out.println("Enter the Key");
test = input2.nextInt();
if(test==2 && i<animals.size()){
System.out.println(animals.get(i));
i++;
}
else{
System.out.println("Out of the Loop");
break;
}
}
}
}