如何在java中使用ArrayList添加元素?

时间:2015-08-01 11:58:17

标签: java arraylist

我现在正在全面了解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;
}

}

1 个答案:

答案 0 :(得分:0)

嗯,快速解决方案如下......

再次读取getMode时你会错过设置模式,下次循环时也不会做任何事情(交换机必须再次激活,你知道..我在while循环中设置它)。学习如下

.social-media a {
  float: left;
}