close

C有scanf、C++有cin>>

那摩java的讀取是用什麼呢?

答案是ScannerBufferedReader

引入 java.util.Scanner;套件:Scanner 是類似C的Scanf、strtok,是將空格space作為token來切割,所以輸入的字串遇到空格就會斷開;語法Scanner input = new Scanner(System.in);float f = input.nextFloat();nextIntnextDouble

引入 java.io.*套件:BufferedReader 修正了Scanner的狀況,可以收錄空格;語法BufferedReader tmp = new BufferedReader(new InputStreamReader(System.in)); 、string str = tmp.readLine();

注意使用readLine()需要使用try-catch處理Exception,因為這個指令很危險,如果輸入卡住系統就shut down了

 


package p002;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class p003 {
    public static String Input(String msg) /*輸入字串*/
    {
        System.out.println(msg);
        String s="";
        BufferedReader br = 
                new BufferedReader( new InputStreamReader(System.in)); 

        
        try
        {s=br.readLine();}catch(Exception e){}
        return(s);
    }
    
    public static int InputNum(String msg, String errmsg) /*輸入數字*/
    {
        
        String  s ="";int k=0 ;boolean fg = true;
        while(fg)
        {
            fg=false;  /*假設會成功,所以設成false讓迴圈只執行一次*/
            s = Input(msg);
            try
            {k= Integer.parseInt(s);}
            catch(Exception e){System.out.println(errmsg);fg=true;} /*有例外要重新迴圈,所以設true*/
        }
        return(k);
    }
    
    public static void main(String[] a)
    {
        /*System.out.println("{"+Input("Enter a String:")+"}");*/
        System.out.println("{"+InputNum("Enter a number:","Plz Enter Number not String")+"}");
    }
}


將Function收錄Fun library後,透過fun.來呼叫Function,改寫如下:

package p002;
/*import java.io.BufferedReader;
import java.io.InputStreamReader;*/

public class p003b {    
    public static void main(String[] a)
    {
        System.out.println("{"+fun.InputNum("Enter a number:","Plz Enter Number not String")+"}");
    }
}

arrow
arrow
    創作者介紹
    創作者 Kuihao 的頭像
    Kuihao

    溫暖午後的金針田__孕育有趣的創新

    Kuihao 發表在 痞客邦 留言(0) 人氣()