作者TonyQ (骨头)
站内java
标题Re: [心得] Java读档的问题
时间Sat Apr 15 14:31:30 2006
※ 引述《StarView (星演)》之铭言:
: 很多新手想学用Java读入文字档常问的问题
: yahoo奇摩知识就有答案了
: http://tw.knowledge.yahoo.com/question/?qid=1405102606210
: 对IO stream有一些基本观念,再看这个就觉得他讲得的很简单,
: 而且比书上举的例子实用多了。
: ---
: 推荐一下! ^^
不是我要吐槽
而是连个Stream说明都没有 会的人看起来是很简单
(简单到我觉得不用看就写的出来了-_-)
贴程式码很简单啊 (囧rz)
而且 新手对IO Stream了解的不多吧 XD
那我写个
Scanner sc=new Scnner(System.in);
要读入一行就写
sc.nextLine();
这样也很简单明了喔 (囧)
对新手来讲还是一头雾水吧?
不管怎麽说 这种东西 看api最实用了(烟)
然後也没解释IOException 等等 新手通常会有问题的地方
其实刚学的时候我也是建议把这些东西当做圣经一样的背下来,
用久了自然就会了,观念看了一堆结果实际不会操作,也是枉然。
---
最原始的输入是透过InputStream.read()
一次只能读一个字元 但是因为这样太麻烦
所以才有BufferedReader的出现
http://0rz.net/9c1fv
BufferedReader 是一个具缓冲区的Reader
我们使用它输入的资料的时候,
是透过FileInpuStream这个Stream来做输入,
所以还要透过InputStreamReader()。
它具有的几个方法
BufferedReader.ready()
反查输入串流的状况是否有资料 (常用於读档)
BufferedReader.readLine()
读入输入串流中的一行
因为System.in会等待让使用者输入,所以在这里也会等待一下,
如果是读取档案则不会有等待的情形出现。:)
BufferedReader.read()
一次读一个字元
至於过滤的问题,个人觉得那跟输入没有直接相关,
单纯是对String的parse,在这里不讨论。
-------底下是关於书上的范例的部份------------------------
再说,看书上的范例,不要一次看一整个范例的功能,
因为通常书上的范例为了说明,会一次解释四五个功能。
看个别的method跟物件的使用,那些才是重点....
个人觉得不管范例写的好不好,只要它能跑,
(有些烂书自己的程式码还会有大小写打错的...无言)
能看的出method在这里面实际扮演的角色,那就是个有用的范例。
现在比较少看书上范例,习惯用API以後减少很多看范例的需求,
以前还有在看书上范例的时候,总是喜欢去改它的范例,
改变不同的值,看它是不是跑出来跟预想的内容是一样的,
来验证自己是真的看懂了。
我举个例子
底下这是一个以前学习输入的过程中一个蛮典型的例题,
一个位数的猜数字游戏。:)
由系统乱数产生一位数的密码,让使用者输入1-9的数字,
如果正确就给恭喜的讯息并结束程式,
如果错误就给错误的讯息,并要求使用者再次输入。
class littlegame{
public static void main(String args[]) throws IOException{
BufferedReader input=new BufferedReader(
new InputStreamReader(System.in));
//这一行的意义是建立输入串流
String pass=""+ ((int)(Math.random()*9)+1);
//这一行示范了怎麽用Math.random() 产生1-9乱数
String inputStr="";
System.out.print("请输入一位数字:");
inputStr=input.readLine();
//这里示范了怎麽提示输入讯息跟
//怎麽让使用者进行输入过程
while(!pass.equals(inputStr)){
//这里示范了 输入错误就要求重新输入的条件
System.out.print("密码错误,请重新输入:");
inputStr=input.readLine();
//这里示范了输入错误的提示讯息跟要求重新输入的写法
}
System.out.println("密码输入正确,程式结束!");
//这里表示说
//照程式流程 while回圈只有在输入正确的时候才会离开
}
}
(那时候好像是把一位数的范例改成能猜四位数的 只要改几个小地方XD )
就算范例写的再烂再不实用,(像上面那个就是一个不实用的烂东西 哈)
把每一个范例中的每一行搞懂,其实都可以学得很多的。
只要是用手做,不是用眼睛看,其实都可以学很多东西的。
最近期中考周要到了,
最近看了很多"老师讲的我都懂,但是自己写不出来"的言论...
嗯...只会用眼睛读程式...没有去了解逻辑面的东西...
连要写出学校作业都很难,更何况学校的作业通常都有轨迹或考古题可循,
到时候要用程式解决自己的问题,通常都是没有轨迹可循的。
--
这还是local 耶 期中考要到了
我竟然还再这边扯这些五四三 糟糕了XD
--
String temp="relax"; | Life just like programing
while(buringlife) String.forgot(temp); | to be right or wrong
while(sleeping) brain.setMemoryOut(); | need not to say
stack.push(life.running); | the complier will
stack.push(scouting.buck()); | answer your life
stack.push(bowling.pratice()); | Bone
everything
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.138.240.57