楼主: jaly50
跳转到指定楼层
上一主题 下一主题
收起左侧

Berkeley CS 61B Data Structures(in Java) Lab6 讨论帖

 
🔗
bigworld 2018-3-4 10:53:45 | 只看该作者
全局:
发现好多人有一样的问题,就是在extra里面,有的地方prompt会在exception前面输出(正常的应该是一句exception,然后自动重复command,输出prompt)输出顺序有点乱。。

回复

使用道具 举报

🔗
tkft 2018-4-19 16:48:27 | 只看该作者
全局:
做一下还是挺有帮助的,光听一遍睡一觉就忘了..
因为出现异常的话只是try中相应代码不会继续执行,所以extra的话就把readline放到try的最后就行。但是这样改了之后又有一些新的问题,前面同学也有提到,没想好怎么处理..

lab6.jpg (183.21 KB, 下载次数: 2)

lab6.jpg
回复

使用道具 举报

🔗
kaiwhu 2018-6-13 02:01:34 | 只看该作者
全局:
lab6::



extra part:


回复

使用道具 举报

🔗
martinma 2018-8-14 02:42:47 | 只看该作者
全局:
-------------------
Welcome to the bank
-------------------

Valid commands are: open, deposit, withdraw, inquire, quit
--> open
Enter name: tt
tt, your new account number is: 100
Thanks for opening an account with us!
--> deposit
Enter account number: 100
Enter amount to deposit: 555
New balance for #100 is 555
--> withdraw
Enter account number: 100
Enter amount to withdraw: 33
New balance for #100 is 522
--> inquire
Enter account number: 100
Balance for #100 is 522
--> deposit
Enter account number: 100
Enter amount to deposit: -55
Error:  Tried to deposit less than 0: -55
New balance for #100 is 522
--> withdraw
Enter account number: 100
Enter amount to withdraw: -44
lab6.BadTransactionException: Invalid transaction number: -44
--> hello
Invalid command: hello
Valid commands are: open, deposit, withdraw, inquire, quit
--> deposit
Enter account number: 1000
Enter amount to deposit: 333
lab6.BadAccountException: Invalid account number: 1000-->
withdraw
Enter account number: 3333
Enter amount to withdraw: 333
lab6.BadAccountException: Invalid account number: 3333-->
quit

extra:移动while里面的readline到try的末尾,如果出现exception则不执行。
回复

使用道具 举报

🔗
shimei 2019-4-30 08:44:08 | 只看该作者
全局:
extra print的顺序会乱掉啊啊啊
回复

使用道具 举报

🔗
shendezhuti 2019-5-9 22:14:11 | 只看该作者
全局:

这道题目让我对exception的使用更加深刻了!!看完课以为自己懂了,实际上做lab还是很多坑!参考了一下别人的代码才发现自己错在哪里!
1.方法()后面用的keyword是"throws xxxException" 而方法内部抛出异常用的是 throw new xxxException();
2.extra方法参考了前面某个同学的将   command = bankApp.readLine("--> "); 移到内部try的最后,输入错误的number后,程序的command 变量还会是之前的输入。不过这样的话如果没有valid
number之后也回不到主函数了,必须要有确定的valid number输入后才能退出回到选择界面。
3.现在脑子尽管对这个概念加强了很多,不过现在还是脑子里有一点点的不清晰,准备过几天再看一次。

评分

参与人数 1大米 +1 收起 理由
嘟嘟的机器人 + 1 很有用的信息!

查看全部评分

回复

使用道具 举报

🔗
不败顽童 2019-11-2 10:35:49 | 只看该作者
全局:
终于对Exception的基本流程有所了解,如何抛出又如何catch住!挺有用的一次!!!!尽管我每天两个小时都无法完成!不过不正是因为这种折磨,我才能对最基本最细节的东西有所掌握么!!!刚把得


回复

使用道具 举报

🔗
Alansong641 2020-1-27 15:42:41 | 只看该作者
全局:
附上截图:



举例说明BadAccountException的传递过程:

在virtualTeller函数中,调用了findaccount函数

  1. if(account==null)
  2.         {
  3.             throw new BadAccountException(acct);
  4.           }
复制代码

//一切从源头发现账号不存在开始,若account==null
//在findaccount函数中,丢出一个new BadAccountException(记住是new了一个出来)
//在声明中加throws关键词

在virtualTeller函数中,deposit, withdraw,balanceInquiry函数调用了findaccount函数
//每个运用到这个函数都要传递一下,加“throws”关键词
例如
  1. public int balanceInquiry(int acct) throws BadAccountException {
复制代码


在BankApp函数中,dodeposit,dowithdraw,doinquire调用了上面的三个函数
//每个运用到这个函数都要传递一下,加“throws”关键词
例如
  1. private void doInquire() throws IOException, BadAccountException
复制代码


最后在main函数中,注意整体有个while函数,使得若输入错误继续进行。

利用try-catch函数接住throw出的exception,让它不结束到结尾,如果到了结尾还没接到,程序中断。

  1. try {
  2.                         bankApp.doDeposit();
  3.                     } catch (BadAccountException e) {
  4.                         System.out.println(e);
  5.                     }
复制代码


总结:
//从函数要判断的源头开始进行丢出exception,多用if语句:if(something wrong){throw new XXXException},如果花括号里面的执行了,那么下面的code直接跳出,不执行

                    //最终在main函数中用try和catch函数,确保catch住后,可以继续while循环
                    //设计得很好 try和catch的作用在于当发现exception时,不退出,而是继续下去这个while循环
                    //而throws 语句就是将exception不断地从调用函数抛向main函数


回复

使用道具 举报

全局:
从prj1怀疑人生到处抄代码   到现在自己折腾出来结果。感觉还可以继续写代码,加油!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表