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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/20141736/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-12 23:27:58  来源:igfitidea点击:

Storing multiple strings in an array list

javaarraylist

提问by user2793161

I have to create the following program:

我必须创建以下程序:

Create a program that allows you to type names. The names that the user types and submits (with the enter key) should be stored in an arraylist. The names in the arraylist should then be printed on the screen.

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

My problem is that I've only been able to only store one name in my arraylist.

我的问题是我只能在我的数组列表中存储一个名称。

My code:

我的代码:

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);
}

The first problem is that after one name has been typed and submitted, you can't type anything, so I have to reset the input like with integer values:

第一个问题是,在输入并提交一个名称后,您无法输入任何内容,因此我必须像使用整数值一样重置输入:

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

The varOne = raadGetal.nextInt();line resets the input, so you can type again. But how do I achieve the same thing with the code above, with Strings and an arraylist?

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

采纳答案by hbsrud

You always declare ArrayList<String> namen = new ArrayList<>();after that it is an empty list. Try something like this:

之后你总是声明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);
        }
    }
}

回答by Masudul

Comparison operator >is not supported by String. Use compareTomethod to compare Stringvalue.

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

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

回答by Ron

The problem isn't your ArrayList, it's the Scanner usage. If you want to ask for multiple names, use a loop.

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

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

回答by sumitsabhnani

You can ask the user first the number of names he wants to give

你可以先询问用户他想给的名字的数量

int noOfNames = in.nextInt();

and then based on this you can create a loop to store all the names

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

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

回答by Diablo

Try calling it in the loop. Its just executing once. try the below:-

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

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

导入 java.util.ArrayList; 导入 java.util.Scanner;

public class addName {

公共类 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();
}

}

}

回答by Ashish Gupta

Lutz, You can write/modify your code as follows:
please note that you should always use String.equals()method for checking the equality of two Strings.

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);
        }
    }
}
}