有人問了我個關(guān)于Java流的問題,在解答完后很有感觸,我認為可能所有新手都可能有這樣的問題,所以總結(jié)一下發(fā)出來,呵呵.供大家參考:
其實我也沒太聽明白什么意思,因為他表達不請,但有一點我是明確的,就是他要從鍵盤輸入數(shù)(控制臺的那種),然后計算出長方形的面積. 類似這個問題.呵呵,其實這個問題很簡單,在C++里只需cin就ok了,但在java里,不是那么簡單,他本來用System.in.read();但這個函數(shù)獨進后返回的是int形,但實際上是ASCII碼,比如輸入1,那么返回的是51(記不清1的ASC碼了),而不是1,當然你可以給他轉(zhuǎn)換成 char但char有轉(zhuǎn)不了int,呵呵,總之很麻煩,俺也說不清,所以就換了一種方法.所以我換了一種方法,該方法如下,我想大概有不少新人都不太會, 所以給出源碼如下:
package test;
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;
public class TestInOut {
/** * @param args */ public static void main(String[] args) { // TODO 自動生成方法存根 Test test=new Test(); BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); System.out.print("請輸入長方形的長:"); try { test.setA(Float.parseFloat(stdin.readLine())); System.out.print("請輸入長方形的寬:"); test.setB(Float.parseFloat(stdin.readLine())); test.setArea(); System.out.print("該長方形的面積是:"); System.out.println(test.getArea()); } catch (IOException e) { // TODO 自動生成 catch 塊 e.printStackTrace(); } } }
class Test{ private float a; private float b;
public float getB() { return b; } public void setB(float b) { this.b = b; } public void setA(float a){ this.a=a; } public float getA(){ return a; }
private float area; public float getArea() { return area; } public void setArea() { area=a*b; } }
執(zhí)行結(jié)果:
請輸入長方形的長:3 請輸入長方形的寬:4 該長方形的面積是:12.0
這里面的 BufferedReader便是個流了,呵呵,所以我就順便把流的東西總結(jié)了一下,請看下面代碼:
package test; import java.io.*; public class IOStreamDemo { public void samples() throws IOException { // 1. 這是從鍵盤讀入一行數(shù)據(jù),返回的是一個字符串 BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter a line:"); System.out.println(stdin.readLine()); // 2. 這是從文件中逐行讀入數(shù)據(jù)
BufferedReader in = new BufferedReader(new FileReader("IOStreamDemo.java")); String s, s2 = new String(); while ((s = in.readLine()) != null) s2 += s + "\n"; in.close();
// 3. 這是從一個字符串中逐個讀入字節(jié) StringReader in1 = new StringReader(s2); int c; while ((c = in1.read()) != -1) System.out.print((char) c);
// 4. 這是將一個字符串寫入文件 try { BufferedReader in2 = new BufferedReader(new StringReader(s2)); PrintWriter out1 = new PrintWriter(new BufferedWriter( new FileWriter("IODemo.out"))); int lineCount = 1; while ((s = in2.readLine()) != null) out1.println(lineCount++ + ": " + s); out1.close(); } catch (EOFException e) { System.err.println("End of stream"); } } }
我想看了上面的代碼,大家應該對流有了一個簡單的認識,會用它從鍵盤讀數(shù)據(jù)了.
|