繁体   English   中英

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

[英]JAVA: How to enter an undefined number of values to a stringarray using a scanner?

我是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循环中做更多的事情。

如果有人能给我一个很棒的解决方案! 但是,如果您还可以解释您已经修改过的内容以使其正常工作,那会更好

这是一个循环的例子。

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

    }
}

这是一个例子。 在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

暂无
暂无

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

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