Topic: 关于try--catch--finally和java标准输入流(急~~~) |
Print this page |
1.关于try--catch--finally和java标准输入流(急~~~) | Copy to clipboard |
Posted by: rahoo Posted on: 2004-12-04 15:15 希望路过的能看下去,谢谢了! 1。书上说至少要用一个catch语句,但我用了只用try编译也能通过! 2。finally语句是不管有没捕获到都要执行的语句,但默认其他语句就是可以执行的,根本不受try的约束,那finally这个关键字设了有什么用,小弟感觉无任何用处! 3。另外,关于System.in.read(buffer)这样的输入也有些不明白,因为如果程序中多次出现此语句,则会存在一个覆盖的问题,如果前面输入的字符串比前面的长,则长出的部分会遗留在后面的字符串中,而且我观察后发现,输出后面字符串的结果是实际字符后面是空格然后下面一行是前面输入的字符(从短字符串长度+2位置起截取长字符串) 为了说明方便,我且设 byte buffer[]=new byte[50]; 如果依次输入 abcdefgh 那么system.out.print(b)的结果就是 xyz fgh (从abcdefgh的3+2个位置开始截取) 而System.out.print(b.length())的结果是8(即a串的实际长度) String(buffer)后面加不加.trim()的区别就是,没加是如果前面输入的比后面的长不超过2,则输出的结果是正确的,否则就有错误;而不用.trim()则.length()始终是50(即buffer数组的长度),且如果前面输入的长于后面的也会出错 4。最后还有一个问题是try-catch-finally的执行机制,因为我的一个程序明明没发生异常,但却捕获到了,真是想不通~ 希望有高手能详细解释一下System.in.read(buffer)的细节和try-catch-finally的执行机制,finally{}语句真的没什么用吗,帮小弟解决困惑,不胜感激! |
2.Re:关于try--catch--finally和java标准输入流(急~~~) [Re: rahoo] | Copy to clipboard |
Posted by: rahoo Posted on: 2004-12-04 15:21 这是我的程序 一个非常简单的银行存取款问题,但运行起来有很多问题
|
3.Re:关于try--catch--finally和java标准输入流(急~~~) [Re: rahoo] | Copy to clipboard |
Posted by: rahoo Posted on: 2004-12-04 15:25 这是运行的一种情况: 帐号: 12 姓名: qerqr 身份证号码: 2314 存款金额: 2313 请选择操作: 1.存款 2.取款 3.退出 1 捕获 操作错误! 请选择操作: 1.存款 2.取款 3.退出 2 捕获 操作错误! 请选择操作: 1.存款 2.取款 3.退出 3 捕获 操作错误! 请选择操作: 1.存款 2.取款 3.退出 |
4.Re:关于try--catch--finally和java标准输入流(急~~~) [Re: rahoo] | Copy to clipboard |
Posted by: rahoo Posted on: 2004-12-04 15:28 这又是一种情况: 帐号: 123 姓名: werfr 身份证号码: 435634636453 存款金额: 523432223 Exception in thread "main" java.lang.NumberFormatException: For input string: "5 23432223 3" at java.lang.NumberFormatException.forInputString(NumberFormatException. java:48) at java.lang.Integer.parseInt(Integer.java:477) at java.lang.Integer.parseInt(Integer.java:518) at Xiti3.main(Xiti3.java:47) Press any key to continue... (注:int型范围可达+21亿到 -21亿,buffer可容纳20个字符,所以输入的也没超范围啊~) |
5.Re:关于try--catch--finally和java标准输入流(急~~~) [Re: rahoo] | Copy to clipboard |
Posted by: rahoo Posted on: 2004-12-04 15:31 如果把程序中的注释去掉,则下面又是一种情况: 也说明了我的第2点问题 帐号: 123 姓名: qweqwrqw 身份证号码: 32 8 32 wrqw 存款金额: 对了,小弟用的是JCreator Pro |
6.Re:关于try--catch--finally和java标准输入流(急~~~) [Re: rahoo] | Copy to clipboard |
Posted by: michaelyung Posted on: 2004-12-20 15:10
这两个语句执行一次没问题。 但每次执行完,buffer中存储的是字节数组。原有的数据还存在。 举个例子来说:
若第二次调用时,此时buffer字节数组中的数据依然存在。 所以第二次如果输入的数值如果大于前一次的数值, 那么buffer原有的才会被覆盖,就不会有问题。 否则
所以才会出现你所说的异常。 将程序中读取数据的两个语句换成下面的吧:
这样就没问题了。我已经调试过了。 |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |