我是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循环中做更多的事情。
如果有人能给我一个很棒的解决方案!但是,如果你还能解释你修改过的东西以使其正常工作,那会更好。
答案 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