简体   繁体   English

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

[英]Storing multiple strings in an array list

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. 用户键入和提交(使用Enter键)的名称应存储在arraylist中。 The names in the arraylist should then be printed on the screen. 然后应将arraylist中的名称打印在屏幕上。

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(); 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? 但是,如何通过上面的代码,字符串和arraylist实现相同的目的?

You always declare ArrayList<String> namen = new ArrayList<>(); 您总是声明ArrayList<String> namen = new ArrayList<>(); after that it is an empty list. 之后,它是一个空列表。 Try something like this: 尝试这样的事情:

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

Comparison operator > is not supported by String. String不支持比较运算符> Use compareTo method to compare String value. 使用compareTo方法比较String值。

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

The problem isn't your ArrayList, it's the Scanner usage. 问题不是您的ArrayList,而是扫描程序的用法。 If you want to ask for multiple names, use a loop. 如果要询问多个名称,请使用循环。

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

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

Try calling it in the loop. 尝试在循环中调用它。 Its just executing once. 它只执行一次。 try the below:- 请尝试以下:

import java.util.ArrayList; 导入java.util.ArrayList; import java.util.Scanner; 导入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();
}

} }

Lutz, You can write/modify your code as follows: Lutz,您可以按照以下方式编写/修改代码:
please note that you should always use String.equals() method for checking the equality of two Strings. 请注意,您应始终使用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);
        }
    }
}
}

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

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