C有scanf、C++有cin>>
那摩java的讀取是用什麼呢?
答案是Scanner和BufferedReader
引入 java.util.Scanner;套件:Scanner 是類似C的Scanf、strtok,是將空格space作為token來切割,所以輸入的字串遇到空格就會斷開;語法Scanner input = new Scanner(System.in);、float f = input.nextFloat();、nextInt、nextDouble
引入 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")+"}");
}
}