輸入時(shí)通過回車(enter)來結(jié)束輸入
在編寫java程序的時(shí)候,我們想通過輸入回車來完成這一行的輸入,這是一個(gè)非常常見的問題,但是如果我們是用Scanner ,然后通過nextInt()方法調(diào)用的時(shí)候,不會(huì)停止輸入,回打出一個(gè)空行,然后等著你繼續(xù)輸入下一個(gè)數(shù)字。
解決辦法
我們可以設(shè)置兩個(gè)Scanner 第一個(gè)以行為單位讀取數(shù)據(jù),這樣就相當(dāng)于是用回車(enter)當(dāng)作結(jié)束符,
然后把讀取到的字符串傳入第二個(gè)Scanner, 然后在進(jìn)行處理
ArrayList<Integer> arr = new ArrayList() ;
System.out.println("Enter a space separated list of numbers:");
Scanner in = new Scanner(System.in);
? String line = in.nextLine();
? Scanner in2 = new Scanner(line);
??
? while(in2.hasNextInt()){
? ? ?arr.add(in2.nextInt());
?}
? System.out.println("The numbers were:"+arr.toString());
只需要把nextInt 或者h(yuǎn)asnextint等函數(shù)改成你所需要的函數(shù)名就可以實(shí)現(xiàn) 不同的輸入,但是是以回車(enter)為結(jié)尾了。
java回車結(jié)束輸入一行
題目
在論壇找到這種方法:
Scanner s =new Scanner(System.in);
String str="";
do {
str=s.nextLine();
if(s.hasNextLine())
break;
}while(true);
System.out.println(str);
經(jīng)實(shí)踐,此法不通:
需要兩個(gè)回車才能結(jié)束輸入。
發(fā)現(xiàn)該解法
Scanner s= new Scanner(System.in);
String str=s.nextLine();
Scanner st=new Scanner(str);
ArrayList a =new ArrayList();
while(st.hasNextInt())
a.add(st.nextInt());
System.out.println(a);
將字符串作為輸入流,空格為間隔符:
源碼:
this調(diào)用下面構(gòu)造函數(shù):
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持html5模板網(wǎng)。
【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請聯(lián)系我們刪除處理,感謝您的支持!