Java-API-Scanner

1.基本用法
 //創(chuàng)建Scanner對(duì)象,使用其中一個(gè)構(gòu)造方法
        Scanner sc = new Scanner(System.in);//鍵盤(pán)錄入
        int i = sc.nextInt();//鍵盤(pán)錄入一個(gè)整數(shù)存儲(chǔ)在i中
        System.out.println(i);
        //這里只能錄入一個(gè)整數(shù),如果輸入的是其它的,會(huì)報(bào)錯(cuò)
      /*
      * java.util.InputMismatchException:這個(gè)錯(cuò)誤,我們可以直接復(fù)制java.util后面的Input類
      * 在API中去搜索,結(jié)果是:
      * 由 Scanner拋出,表示 Scanner到的令牌與預(yù)期類型的模式不匹配,或令牌超出預(yù)期類型的范圍。
      **/

2.hasNextInt() :判斷錄入的是否為Int型(hasNextXXX就是判斷這個(gè)錄入類型的)
//如果我們就想只能輸入Int值,就需要調(diào)用另一個(gè)方法
        //這個(gè)方法會(huì)判斷用戶錄入的是否超出了Int的范圍
        Scanner sc = new Scanner(System.in);
        if (sc.hasNextInt()){
            //我們?cè)诒4孢@個(gè)錄入之前,就判斷這個(gè)錄入是否是整數(shù)
            int i = sc.nextInt();
            System.out.println(i);
        }else{
            System.out.println("您輸入的類型有誤"); 
        }
3.輸入多個(gè)整數(shù)和多個(gè)字符串
 //輸入多個(gè)整數(shù)
        Scanner sc = new Scanner(System.in);
        System.out.println("請(qǐng)輸入第一個(gè)整數(shù):");
        int i = sc.nextInt();
        System.out.println("請(qǐng)輸入第二個(gè)整數(shù):");
        int j = sc.nextInt();
        int sum = i + j;
        System.out.println("i+j=" + sum);

// public String nextLine():就是將錄入的所有東西都以字符串保存
 Scanner sc = new Scanner(System.in);
        System.out.println("請(qǐng)輸入第一個(gè)字符串:");
        String str1 = sc.nextLine();
        System.out.println("請(qǐng)輸入第二個(gè)字符串:");
        String str2 = sc.nextLine();
        System.out.println("str1="+str1+"http://str2="+str2);
4.同時(shí)錄入字符串和整數(shù)會(huì)出現(xiàn)的問(wèn)題
 Scanner sc = new Scanner(System.in);
        System.out.println("請(qǐng)輸入第一個(gè)整數(shù):");
        int i = sc.nextInt();
        System.out.println("請(qǐng)輸入第二個(gè)字符串:");
        String str2 = sc.nextLine();
        System.out.println("str1=" +i+ ", str2="+str2);
     //按上面的代碼寫(xiě)下來(lái),我們?cè)趫?zhí)行到"請(qǐng)輸入第二個(gè)字符串"就會(huì)跳過(guò)str2 = sc.nextLine()方法
        //直接執(zhí)行下面的打印方法
       /*
       * 分析問(wèn)題原因:
       * nextInt()是鍵盤(pán)錄入整數(shù)的方法,當(dāng)我們錄入10的時(shí)候,
       * 其實(shí)在鍵盤(pán)上錄入的是10和\r\n,(\r\n:就是我們輸入完10后,輸入的回車符)
       *nextInt()方法只獲取10就結(jié)束了
       * nextLine()方法是獲取字符串的方法,可以接受任意類型
       * 但是其通過(guò)\r\n來(lái)結(jié)束一行錄入,遇到\r\n就證明你的輸入結(jié)束
       *所以上面我們輸入了10和\r\n,所以nextLine()遇到了,就直接結(jié)束了
       * */
#解決辦法很簡(jiǎn)單—可以將所有的輸入都用nextLine(),到時(shí)再轉(zhuǎn)換類型就好了


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容