java輸入空行結束問題
java輸入空行結束
最近兩次筆試都被這一個問題困擾
如何在輸入空行後停止輸入,嘗試瞭各種方法,以下是可以實現該目的的代碼:
public static void main(String[] args) { Scanner in = new Scanner(System.in); while(true){//第一處 String s = in.nextLine(); if(s.equals(""))//第二處 break; System.out.println(s); } System.out.println("Over Input"); }
以上代碼第一處判斷條件可以替換為in.hasNextLine(),但是不可以是in.hasNext().第二處判斷條件可以是s.isEmpty(),也可以是s.length == 0。
我查找資料發現:
next()與nextLine有以下區別:
next()一定要讀取到有效字符後才可以結束輸入,對輸入有效字符之前遇到的空格鍵、Tab鍵或Enter鍵等結束符,next()方法會自動將其去掉,隻有在輸入有效字符之後,next()方法才將其後輸入的空格鍵、Tab鍵或Enter鍵等視為分隔符或結束符。
簡單地說,next方法不能得到帶空格的字符串。
而nextLine()方法的結束符隻是Enter鍵,即nextLine()方法返回的是Enter鍵之前的所有字符,它是可以得到帶空格的字符串的。
java輸入數據,空格繼續,回車結束輸入
普通版
可輸入,可輸出。帶詳細的註釋
import java.util.Scanner; public class SumDemo { public static void main(String[] args) { System.out.println("請輸入兩個數字,中間用空格隔開,例如5 5"); //得到一個掃描器,用來掃描 系統的輸入 Scanner input = new Scanner(System.in); //申明一個臨時的字符串變量temp,用來保存 掃描器讀取的一行; String temp = input.nextLine(); //temp字符串首先trim()一下,就是去掉兩邊的空白, //因為有的人可能輸入的是 空格5空格5空格回車。. //所以去掉兩邊的空格變成 5空格5回車 就符合要求瞭 //split(" ")方法表示,用空格去切割字符串,返回的結果是一個字符串數組 String[] ss = temp.trim().split(" "); //從兩個字符串中解析得到兩個數字,並求和 int num1 = Integer.parseInt(ss[0]); int num2 = Integer.parseInt(ss[1]); int sum = num1+num2; //輸出結果 System.out.println("輸入的數字是"+num1+" "+num2+"兩數的和是:"+sum); //養成良好的習慣,打開瞭的資源要記得關閉,我們打開瞭掃描器,就要關閉掃描器 input.close(); } }
升級版
可重復輸入數字,重復輸出結果,並帶退出功能、
import java.util.Scanner; public class SumTest { public static void main(String[] args) { Scanner input = new Scanner(System.in); while(true){ System.out.println("如果輸入exit,那麼退出。輸入兩個數字,用空格隔開"); String temp = input.nextLine(); if(temp.trim().equals("exit")){ break; } String[] ss = temp.trim().split(" "); int num1 = Integer.parseInt(ss[0]); int num2 = Integer.parseInt(ss[1]); int sum = num1+num2; System.out.println("輸入的數字是"+num1+" "+num2+"兩數的和是:"+sum); } input.close(); } }
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- Java中BufferedReader與Scanner讀入的區別詳解
- Java如何實現通過鍵盤輸入一個數組
- 新手初學Java流程控制
- java編程學習輸入輸出詳解看完快速上手
- 手把手教你JAVA進制之間的轉換