在java控制台程式中的輸入不像在C或其他語言那麼的簡單,因此很多java基礎教程並沒有介紹。然而它又是很重要的,尤其對於像我們這些由C或C++轉java的同學,因此我想對Java的輸入語句做一些探討。當然,作為初學者的我這樣做是班門弄斧,而我只是想起到拋磚引玉的作用,希望大家一起討論,並不惜賜教!
首先,java.util.Scanner包中的Scanner(中文意思是掃描器)類,這個類是一個final類繼承於object類,從它的類名上就可以看出它有點類似於掃描器,所以它只能掃描使用者輸入到螢幕上的資訊,這是就需要一個System.in然後再掃描(我是這樣認為的)。當然它掃描到的只是字元,但在需要時可以轉換成其他類型,它提供了很多此類的方法:String next()、 BigDecimal nextBigDecimal() 、BigInteger nextBigInteger() 、BigInteger
nextBigInteger(int radix) 、 boolean nextBoolean() 、byte nextByte() 、 byte nextByte(int radix) 、double nextDouble() 、float nextFloat() 、int nextInt() 、int nextInt(int radix) 、 String nextLine() 、long nextLong() 、long nextLong(int radix) 、short nextShort() 、short
nextShort(int radix) 。這些方法都可以得到相應類型的資料。例
如:
import java.util.Scanner;
public class Importtext {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
System.out.println(i);
}
}
這個例子就可以得到一個整型的資料。
(關於Scanner的東西還有很多,我看的還不是很清楚只知道一些簡單的,更複雜的東西,請高手指點!)
再有就是這個BufferedReader類,這個類“從字元輸入資料流中讀取文本,緩衝各個字元,從而提供字元、數組和行的高效讀取”(摘自Java協助文檔),因此它需要緩衝區。建立緩衝區的構造方法有兩個:BufferedReader(Reader in) 建立一個使用預設大小輸入緩衝區的緩衝字元輸入資料流。BufferedReader(Reader in, int sz) 建立一個使用指定大小輸入緩衝區的緩衝字元輸入資料流。類似的它讀的也是字串,需要是進行處理,即將字串轉換成整型、浮點型等類型。我見過的類型轉換有Integer.parseInt()這個函數,是靜態類Integer的一個方法parse的意思是解析,這樣就很明白了。類似的我還見過Float.parseFloat(),舉個例子吧:
import java.io.*;
public class importtext {
public static void main(String[] args) {
String st;
int num;
float fnum;
try{
System.out.print("輸入:");
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
st = br.readLine();
System.out.print("輸入一個數:");
num = Integer.parseInt(br.readLine());
System.out.print("輸入一個浮點數:");
fnum = Float.parseFloat(br.readLine());
System.out.print("輸出:"+st+'/n');
System.out.print("輸出:"+num+'/n');
System.out.print("輸出:"+fnum+'/n');
}catch(IOException e){}
}
}
還有就是運行加參數這個方法,因為我沒有用DOS介面輸入命令的方法所以沒有用,但是聽比較牛的學長說過這個方法就查了一下,也比較新穎吧,拿出來說說,因為Java的主函數是帶參數的(我也見過C++的主函數帶參數,但是自己搞加參數是不行,不知道為什麼,知道的可以指點一下!謝謝),args[]這個字串數組,它是可以接收資料的。當你編寫好程式後,編譯成位元組碼檔案後運行時加實參【java 檔案名稱 參數(字串)】,這個就不舉例子了。
這是我學Java時一點小小的總結,肯定有很多的紕漏希望各位能不惜賜教,謝謝大家。