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。 

推薦閱讀: