我现在正在全面了解ArrayList
。我使用ArrayList
为练习目的创建了一个小代码,但是有一个不需要的输出。
我的输出应该是这样的:
******************** \
1 - 添加名称
2 - 显示名称
进入模式:1
输入姓名:Bruno
是否要再次添加名称?(y / n):y
输入名称:Django
是否要再次添加名称?(y / n):n
******************** \
1 - 添加名称
2 - 显示名称
进入模式:2
布鲁诺
Django的
但相反,我的输出是这样的:
******************** \
1 - 添加名称
2 - 显示名称
进入模式:1
输入姓名:Bruno
是否要再次添加名称?(y / n):y
输入名称:Django
是否要再次添加名称?(y / n):n
******************** \
1 - 添加名称
2 - 显示名称
进入模式:2
当我已添加名称然后按 n 时,我会选择下一个, 2 用于显示名称。但它没有显示任何东西。我无法弄清楚算法。看起来ArrayList
在重新选择模式时会重置其元素。
这是我的代码:
package Practice;
import java.util.Scanner;
import java.util.ArrayList;
public class Practice1Main {
public static void main(String[]args){
ArrayList<String>namelist=new ArrayList<>();
Scanner hold = new Scanner(System.in);
String response, name;
int mode = getMode();
switch(mode){
case 1:
do{
System.out.print("Enter name:");
name = hold.nextLine();
namelist.add(name);
System.out.print("Do you want to add a name again?(y/n):");
response = hold.nextLine();
if(response.equalsIgnoreCase("n")){
getMode();
}
}while(response.equalsIgnoreCase("y"));
break;
case 2:
for(int x = 0;x < namelist.size();x++){
System.out.println(namelist.get(x));
}
break;
default:
System.out.print("ERROR!");
break;
}
}
public static int getMode(){
Scanner hold = new Scanner(System.in);
int mode;
System.out.print("********************\n");
System.out.print("1 - Add names\n");
System.out.print("2 - Show names\n");
System.out.print("Enter mode:");
mode = hold.nextInt();
return mode;
}
}
答案 0 :(得分:0)
嗯,快速解决方案如下......
再次读取getMode时你会错过设置模式,下次循环时也不会做任何事情(交换机必须再次激活,你知道..我在while循环中设置它)。学习如下
.social-media a {
float: left;
}