Java基礎擴充套件1.資料輸入

煙花易冷酒散人心發表於2020-10-20

剛剛接觸Java,想著寫個從鍵盤上接收資料然後輸出資料的Demo。

 public static void main(String[] args) {
        //建立物件
        Scanner Sc = new Scanner(System.in);
        //接收資料
         int x = Sc.nextInt();
         //輸出資料
        System.out.println("x=" + x);
    }

剛開始用nextInt()接收資料,發現輸入漢字的時候報錯。開始傻傻的以為是資料型別錯誤,試了強轉,換了長整型,依然出現原來的情況,就知道是自己排雷的出發點有了問題。
看了下菜鳥教程,發現使用nextInt()方法時,與next()方法類似,只是它的返回值是int型別的。而且將空格看作是兩個輸入的資料的間隔
(當使用nexInt()方法時,只能輸入int型別的資料。)
好啦,恍然大悟!

更改後的Demo:

public static void main(String[] args) {
        //建立物件
        Scanner Sc = new Scanner(System.in);
//         long x = Sc.nextInt();
        if (Sc.hasNext()){
            String x = Sc.nextLine();
            System.out.println("x=" + x);
        }
    }

備註知識點:

next():
1、一定要讀取到有效字元後才可以結束輸入。
2、對輸入有效字元之前遇到的空白,next() 方法會自動將其去掉。
3、只有輸入有效字元後才將其後面輸入的空白作為分隔符或者結束符。
next() 不能得到帶有空格的字串。

nextLine():
1、以Enter為結束符,也就是說 nextLine()方法返回的是輸入回車之前的所有字元。
2、可以獲得空白。
copy知識擴充套件點:
如果要輸入 int 或 float 型別的資料,在 Scanner 類中也有支援,但是在輸入之前最好先使用 hasNextXxx() 方法進行驗證,再使用 nextXxx() 來讀取。

加坑系列,反正都是為了輸出嘛,多一樣算一樣
BufferedReader用法;
由Reader類擴充套件而來,提供通用的緩衝方式文字讀取,而且提供了很實用的readLine,讀取一個文字行,從字元輸入流中讀取文字,緩衝各個字元,從而提供字元、陣列和行的高效讀取。
附上程式碼:

public static void main(String[] args) {
        String i = null;
        BufferedReader Bf = new BufferedReader(new InputStreamReader(System.in));
        do try {
            i = Bf.readLine();
            System.out.println("您輸入的字串為:" + i);
        } catch (IOException e) {
            e.printStackTrace();
        } while (!i.equals("end"));

ps:甩異常這個鍋還沒搞懂,都是編碼工具的快捷甩鍋。俗話說得好,沒出現問題就不算問題對吧?

相關文章