在数组列表中存储多个字符串

时间:2013-11-22 09:49:47

标签: java arraylist

我必须创建以下程序:

  

创建一个允许您键入名称的程序。用户键入和提交的名称(使用回车键)应存储在arraylist中。然后应在屏幕上打印arraylist中的名称。

我的问题是我只能在我的arraylist中存储一个名字。

我的代码:

ArrayList <String> namen = new ArrayList <>();        
System.out.print("Enter a name: ");        
Scanner in = new Scanner(System.in);        
namen.add(in.next());        
for (String naam: namen) {
    System.out.println(naam);
}

第一个问题是,在输入一个名字并提交后,你不能输入任何内容,所以我必须像输入整数值一样重置输入:

if (varOne > varTwo) {
    System.out.println("Too high!");
    varOne = raadGetal.nextInt();
}

varOne = raadGetal.nextInt();行会重置输入,因此您可以再次输入。但是我如何用上面的代码实现同样的东西,使用字符串和一个arraylist?

6 个答案:

答案 0 :(得分:1)

在它是一个空列表之后,你总是声明ArrayList<String> namen = new ArrayList<>();。尝试这样的事情:

public class MyClass {
    private ArrayList<String> namen = new ArrayList<>();

    public void addName(){
        System.out.print("Enter a name: ");
        Scanner in = new Scanner(System.in);
        namen.add(in.next());

        for(String naam: namen){
            System.out.println(naam);
        }
    }
}

答案 1 :(得分:0)

String不支持比较运算符>。使用compareTo方法比较String值。

if(varOne.compareTo(varTwo)>0) {
System.out.println("Too high!");
varOne = raadGetal.nextInt();
}

答案 2 :(得分:0)

问题不在于您的ArrayList,而是Scanner的用法。如果您想要多个名称,请使用循环。

for(int i = 0; i < NUMBER_OF_NAMES_TO_GET; i++){
    namen.add(in.next());
}

答案 3 :(得分:0)

您可以先询问用户他想要提供的姓名数量

int noOfNames = in.nextInt();

然后基于此,您可以创建一个循环来存储所有名称

for(int i = 0; i <noOfNames ; i++){
    names.add(in.next());
}

答案 4 :(得分:0)

尝试在循环中调用它。它只执行一次。试试以下: -

import java.util.ArrayList; import java.util.Scanner;

public class addName {

private void name() {
    ArrayList<String> namen = new ArrayList<String>();

    int count = 1;

while(count>0){
    System.out.print("Enter a name: ");
    Scanner in = new Scanner(System.in);
    String a = in.next();
    namen.add(a);
    if (a.equals("exit")) {
        System.out.println("Exiting");
        System.exit(0);
    }
    else{
        for (String naam : namen) {
                System.out.println(naam);
    }
    }
    count++;
}
}

public static void main(String[] args) {
    addName addNames = new addName();
    addNames.name();
}

}

答案 5 :(得分:0)

Lutz,您可以按如下方式编写/修改您的代码:
请注意,您应始终使用String.equals()方法来检查两个字符串的相等性。

import java.util.ArrayList;
import java.util.Scanner;

public class AddNames {

public static void main(String[] args) {

    ArrayList<String> namen = new ArrayList<String>();
    System.out.print("Enter a name(or write exit to close the program) : ");
    Scanner in = new Scanner(System.in);
    String name = in.next();
    while (!name.equals("exit")) {

        namen.add(name);
        name = in.next();
    }
    if (name.equals("exit")) {
        System.out
                .println("Exiting the program. The names you have entered are:");
        for (String naam : namen) {
            System.out.println(naam);
        }
    }
}
}