JAVA:如何使用扫描仪向stringarray输入未定义数量的值?
我是Java新手,我正在制作一个程序,可以获取许多名称并将它们放入ArrayList,然后打印出名称。我希望用户按ctrl-Z键指示列表的结尾。到目前为止,我有:JAVA:如何使用扫描仪向stringarray输入未定义数量的值?,java,arraylist,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());
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);
}
ArrayList name=new ArrayList();
System.out.print(“输入名称:”);
扫描仪输入=新扫描仪(系统输入);
name.add(in.next());
in.nextLine()等于(“”);
for(字符串naam:名称){
系统输出打印LN(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));
}
}
}
公共类扫描{
公共静态void main(字符串[]args){
ArrayList ArrayList=新的ArrayList();
扫描仪sc=新的扫描仪(System.in);
布尔testContinue=true;
while(testContinue){
System.out.println(“输入字符串:”);
字符串str=sc.next();
如果(str.equals(“退出”))
testContinue=false;
否则{
/*
*添加到arrayList
*/
arrayList.add(str);
testContinue=sc.hasNextLine();
}
}
/*
*显示阵列列表
*/
对于(int i=0;i这里有一个例子。在Unix系统上,Control-z将一些东西放在后台。您是指Control-d,它通常意味着输入结束吗?如果是这样,下面的示例将起作用。关键是控制字符不会发送给您的应用程序,而是由终端进行解释。但是,如果您将System.in包装在BufferedArea中der,则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.io.BufferedReader;
导入java.io.InputStreamReader;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.Scanner;
公共类ReadNames{
公共静态void main(字符串args[])引发异常{
列表名称=新的ArrayList();
System.out.print(“输入名称:”);
扫描仪输入=新的扫描仪(新的BufferedReader(新的InputStreamReader(System.in));
while(在.hasNext()中){
字符串n=in.next();
如果(n.isEmpty()){
打破
}
名称。添加(n);
}
for(字符串名称:名称){
System.out.println(“名称:”+Name);
}
}
}
运行示例:
$ java ReadNames
Enter a name: dave
john
bill
<control-d here>
Name: dave
Name: john
Name: bill
$java ReadNames
输入一个名称:dave
厕所
账单
姓名:戴夫
姓名:约翰
姓名:比尔
in.nextLine()
如果不在循环中,如何获得多于1行的数据?您应该调用列表的名称
,这样您就可以使用名称
作为每个变量的名称。对于集合使用复数通常更清晰。谢谢提示!我已经重命名了变量