繁体   English   中英

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

[英]How to add elements using ArrayList in java?

我现在正在学习有关ArrayList所有知识。 我已经使用ArrayList创建了一个用于实践的小代码,但是有不需要的输出。

我的输出应该是这样的:

******************** \\

1-添加名称

2-显示名称

进入模式:1

输入名称:布鲁诺

是否要再次添加名称?(y / n):y

输入名称:Django

是否要再次添加名称?(y / n):n

******************** \\

1-添加名称

2-显示名称

进入模式:2

布鲁诺

Django的

但相反,我的输出是这样的:

******************** \\

1-添加名称

2-显示名称

进入模式:1

输入名称:布鲁诺

是否要再次添加名称?(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;
}

}

好吧,下面是一个快速解决方案...

您在再次读取getMode时会错过设置模式,并且在下次循环时也什么也不做(您必须再次激活该开关。我在while循环中对其进行了设置)。 在下面学习

    while( mode == 1 || mode == 2 ) {
    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")){
                mode = getMode(); // <---- set mode
            }

        }while(response.equalsIgnoreCase("y"));
        break;
    case 2:
        for(int x = 0;x < namelist.size();x++){
            System.out.println(namelist.get(x));

        }
        mode=-1; // <--- break out
        break;
    default:
        System.out.print("ERROR!");
        mode = -1; 
        break;
    }
}
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM