JAVA:如何使用扫描仪为stringarray输入未定义数量的值?

时间:2014-09-02 14:18:28

标签: java arraylist

我是Java新手,我正在创建一个程序,可以使用多个名称并将它们放入ArrayList中,然后打印出名称。我希望用户按ctrl-Z来指示列表的结尾。到目前为止,我有这个:

    ArrayList<String> name = new ArrayList<>();
    System.out.print("Enter a name: ");
    Scanner in = new Scanner(System.in);
    name.add(in.next());
    in.nextLine().equals("");

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

但我认为我需要在for循环中做更多的事情。

如果有人能给我一个很棒的解决方案!但是,如果你还能解释你修改过的东西以使其正常工作,那会更好。

2 个答案:

答案 0 :(得分:0)

以下是执行循环的示例。

public class Scan {
    public static void main(String[] args) {

        ArrayList<String> arrayList = new ArrayList<String>();

        Scanner sc = new Scanner(System.in);
        boolean testContinue = true;

        while (testContinue) {

            System.out.println("Input a string :");
            String str = sc.next();

            if (str.equals("quit"))
                testContinue = false;
            else {
                /*
                 * add to arrayList
                 */
                arrayList.add(str);
                testContinue = sc.hasNextLine();
            }
        }

        /*
         * Display arrayList
         */
        for(int i = 0; i<arrayList.size(); i++) {
            System.out.println(arrayList.get(i));
        }

    }
}

答案 1 :(得分:0)

这是一个例子。在Unix系统上,Control-z将一些东西放在后台。你的意思是control-d通常意味着输入的结束?如果是这样,以下示例将起作用。关键是控制字符不会发送给您的应用程序,而是由终端解释。但是,如果将System.in包装在BufferedReader中,则BufferedReader将在EOF上返回null,这将停止扫描程序。

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class ReadNames {

    public static void main(String args[]) throws Exception {
        List<String> names = new ArrayList<String>();

        System.out.print("Enter a name: ");
        Scanner in = new Scanner(new BufferedReader(new InputStreamReader(System.in)));

        while( in.hasNext() ){
            String n = in.next();
            if( n.isEmpty() ){
                break;
            }
            names.add(n);
        }

        for(String name: names){
            System.out.println("Name: " + name);
        }
    }
}

示例运行:

$ java ReadNames
Enter a name: dave
john
bill
<control-d here>
Name: dave
Name: john
Name: bill