簡體   English   中英

在數組列表中存儲多個字符串

[英]Storing multiple strings in an array list

我必須創建以下程序:

創建一個程序,使您可以鍵入名稱。 用戶鍵入和提交(使用Enter鍵)的名稱應存儲在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實現相同的目的?

您總是聲明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);
        }
    }
}

String不支持比較運算符> 使用compareTo方法比較String值。

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

問題不是您的ArrayList,而是掃描程序的用法。 如果要詢問多個名稱,請使用循環。

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

您可以先詢問用戶要輸入的名字數量

int noOfNames = in.nextInt();

然后基於此,您可以創建一個循環來存儲所有名稱

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

嘗試在循環中調用它。 它只執行一次。 請嘗試以下:

導入java.util.ArrayList; 導入java.util.Scanner;

公共類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,您可以按照以下方式編寫/修改代碼:
請注意,您應始終使用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