一个简单的java试题,求解

2013-05-17 19:43:52 +08:00
 Insomnia
题目要求如下:

Write a program named bank that maintains a database of bank accounts. Each account will be stored in a BankAccount object. The Following example shows what the user will see:
commands:

-------------------------------------------------

| Commands: o - Open account c - Close account|

| d - Deposit w - Withdraw |

| s - Select account q - Quit |

-------------------------------------------------

Current account: None selected



Enter command: o

Enter new account number: 158-740

Enter initial balance: 250



-------------------------------------------------

|Commands: o - Open account c - Close account|

| d - Deposit w - Withdraw |

| s - Select account q - Quit |

-------------------------------------------------

Current account: 158-740 Balance: 250.00


Enter command:

The program repeatedly prompts the user to enter commands, which it then executes. The program will not terminate until the user enters the command q. Note that the list of commands is redisplayed after each command has been executed, along with the current access and its balance. If there is not current account, the message

None selected
is displayed instead of the account number.


Commands Documentation:


Open account: The user is prompted to enter a new account number and initial balance. This data is stored in a new BankAccount object. BankAccount objects for all the existing accounts must be stored in an array. The new account becomes the current account.


Close account: If there is no current account, the message
Please select an account
is displayed. Otherwise, the current account is closed. There is no current account after this operation is completed.

Deposit: If there is no current account, the message
Please select an account
is displayed. Otherwise the user is promoted to enter the amount of the deposit:
Enter amount to deposit: 100
The amount entered by the user is added to the balance of the current account.

Withdraw: If there is no current account the message
Please select an account
is displayed. Otherwise the user is promoted to enter the amount of the withdrawal
Enter amount to withdraw: 25
The amount entered by the user is subtracted to the balance of the current account.

Select account: The user is prompted to enter an account number
Enter account number: 158-740

The array is then searched to see if any BankAccount object contains this number. If, so, that object becomes the current account. If not, the following message is displayed
Account number was not found

Quit: Terminate program.


Few other requirements for the program:

The size of array used to store BankAccount objects must be 20 elements.
Add sufficient comments to your code.
Follow Java indentation rules.



不知道谁能帮忙给写下这个代码。。。也不知道该如何感谢,只能先用这里的金币来感谢了。
希望可以得到帮助。谢谢了先。
5462 次点击
所在节点    Java
56 条回复
ljbha007
2013-05-18 01:07:22 +08:00
@best1a
确实不知道真相 但是我是对我的推测十分有把握的情况下才这么说的
并且这种推测是完全合理的 如果错了我愿意承认错误 但是似乎楼主并没有指出我这个推测有错

你说的第一种情况非常不可能,因为如果不太明白大多数情况是会询问不会解决的某个环节,而不是直接叫人从头做一遍,因为如果叫人从头做一遍的话就失去了练习的本身的意义了

我推测他是帮朋友找人代做作业的原因是
- 这种题目基本可以肯定不是实际项目中需求
- “@vibbow 不是面试题,是一个朋友发给我的,让我帮他写一下。可是我只会 PHP。” 这句话结合前面的推论可以基本确定是作业、考试、实验一类的问题需要楼主代写
- 如果是作业、考试、实验,那么前提肯定是要求自己完成,那么找人代做的话肯定不可能向代码的接收方明确说明代码的原作者是谁,那么必然会存在欺骗的情况

那么结论很明显:楼主是想帮朋友完成作业(或者考试、实验),而找人代写代码
那么诈骗这个情况是基本跑不掉的
sdysj
2013-05-18 01:12:18 +08:00
鄙视问这种问题的人,不解释......... -1 + 大拇指向下
best1a
2013-05-18 01:16:48 +08:00
@ljbha007 联系一个实际的情况,我这道题做错了,怎么才得1分,我自己验算n次都没问题,你来做一下这道题?

我要说明的重点是,一个推测就只是一个推测而已,不要随便上纲上线
ljbha007
2013-05-18 02:52:24 +08:00
@best1a
这道题肯定不是这么回事
hewwcn
2013-05-18 13:07:02 +08:00
LS的几位
不想回答的话,不喜欢这种情况,无视就好了,何必这样。
tedeyang
2013-05-18 18:03:00 +08:00
本来以为是问解题思路的,结果直接求代码。楼主啊,这里都是好学生,讲版权的。确实可以发到CSDN去。
题外话:这种题目其实能顺利写出来的人还真不多,别看java程序员满大街都是,其实大部分只会在WEB框架上CRUD,这种终端界面+自定义存储结构的小程序估计都没写过。
Ricepig
2013-05-18 19:15:00 +08:00
完全求代码就是为了交差吧,如果是代码求指点还可以理解。
sanddudu
2013-05-18 19:52:27 +08:00
@ljbha007 其实本身你就把代码的用途变成了获得利益,然后根据这个进行猜想,自然的会认为是诈骗。在细节还不明确的情况下过早的下定论。
同意@best1a 推测永远只能是推测,不要上纲上线。
虽然我也反感代做作业,但是我更反感脑补能力过强的人。
ljbha007
2013-05-18 19:56:02 +08:00
@sanddudu
的确是猜测 但是是有依据的前提下的合理猜测 更何况楼主并没有指出我猜测错了
mlhorizon
2013-05-18 22:37:58 +08:00
来讨论问题,交换思路的,大力支持;凡求代码的一概不理。
不管LZ做PHP还是做Java,解题的思路和语言是没有关系的。
像LZ这样,直接放个题目,不先讲讲自己的理解,人家将你往坏处想很正常。
kx5d62Jn1J9MjoXP
2013-05-18 22:49:46 +08:00
额...如果对那个command line interface的除错能力要求不高的话, 这个实在很简单啊, 不可能是面试题吧, 非常像是作业...
顺便被26楼BS了
ljbha007
2013-05-18 23:42:09 +08:00
@tedeyang
版权是一回事 诈骗是另一回事
这个事件中两样都有 但是诈骗情节更严重
kx5d62Jn1J9MjoXP
2013-05-19 00:02:54 +08:00
其实这很明显是某位同学的作业, 不过充其量是个平时作业, 完全不是大作业, 写出来只是觉得此楼的某些争吵触到我的痛点...
关于版权, 这些代码不想保留任何版权
关于诈骗, 对此我保留意见
关于Java程序员的水准, 其实真正让我动手写的原因就是这个, 虽然写了还是可能被BS(包括任何新的理由)
关于30楼某位的类似于"语言不太重要"的说法, 我对这种流行的说法完全无法认同啊
如果这种粘贴大段代码的行为污染了v2ex的话, 管理员请删了, 绝对没意见..

import java.util.Arrays;
import java.util.Scanner;

public class BankSimulation {
public static Scanner scanner = new Scanner(System.in);
private Bank bank = new Bank();
public void openAccount(){
System.out.print("Enter new account number: ");
String name = scanner.nextLine();
System.out.print("Enter initial balance: ");
double initial = scanner.nextDouble();
scanner.nextLine();
bank.openAccount(name, initial);
System.out.println();
}

public void closeAccount(){
bank.closeAccount();
System.out.println();
}

public void selectAccount(){
System.out.print("Enter account number: ");
String name = scanner.nextLine();
bank.selectAccount(name);
System.out.println();
}

public void deposit(){
System.out.print("Enter amount: ");
double amount = scanner.nextDouble();
scanner.nextLine();
bank.deposit(amount);
System.out.println();
}

public void withdraw(){
System.out.println("Enter amount: ");
double amount = scanner.nextDouble();
scanner.nextLine();
bank.withdraw(amount);
System.out.println();
}

public void quit(){
System.exit(0);
}

public void displayPrompt(){
System.out.println("-------------------------------------------------");
System.out.println("| Commands: o - Open account c - Close account|");
System.out.println("| d - Deposit w - Withdraw |");
System.out.println("| s - Select account q - Quit |");
System.out.println("-------------------------------------------------");

System.out.print("Current Account: ");
BankAccount current = bank.getCurrent();
if(current == null){
System.out.println("None Selected");
}else{
System.out.println(current);
}

System.out.println();
System.out.println();
System.out.print("Enter Command: ");

}
public static void main(String[] args) {
BankSimulation simu = new BankSimulation();

while(true){
simu.displayPrompt();
String line = scanner.nextLine();

if(line.length() == 0) continue;

char ans = Character.toUpperCase(line.charAt(0));
switch(ans){
case 'O' : simu.openAccount(); break;
case 'C' : simu.closeAccount(); break;
case 'S' : simu.selectAccount(); break;
case 'D' : simu.deposit(); break;
case 'W' : simu.withdraw(); break;
case 'Q' : simu.quit();
default: break;
}
}
}


}

class Bank {
private BankAccount[] accounts;
private int numAccounts = 0;

BankAccount currentAccount = null;

public Bank(){
accounts = new BankAccount[10];
}

public void openAccount(String name, double initial){
if(numAccounts == accounts.length){
accounts = Arrays.copyOf(accounts, accounts.length * 2);
}

accounts[numAccounts++] = new BankAccount(name, initial);
currentAccount = accounts[numAccounts - 1];
}

/**
*
* @param name
* @return true if the specified account is found
*/
public boolean selectAccount(String name){
for(int i = 0; i < numAccounts; i++){
if(accounts[i].getName().equals(name)){
currentAccount = accounts[i];
return true;
}
}

return false;
}

public void closeAccount(){
currentAccount = null;
}

public void deposit(double amount){
if(currentAccount != null){
currentAccount.deposit(amount);
}
}

public boolean withdraw(double amount){
if(currentAccount != null){
return currentAccount.withdraw(amount);
}

return false;
}

public BankAccount getCurrent(){
return currentAccount;
}


}

class BankAccount {
private String accountName;
private double balance;

public BankAccount(String name, double initial){
accountName = name;
balance = initial;
}

public void deposit(double amount){
balance += amount;
}

public boolean withdraw(double amount){
if(balance >= amount){
balance -= amount;
return true;
}else{
return false;
}
}


public String getName() {
return accountName;
}

public String toString(){
return accountName + " Balance: " + balance;
}


}


// 给楼主的ps: 之所以bank里的accounts用了基本的数组, 是根据题目的要求, 否则肯定会用ArrayList
bengol
2013-05-19 00:33:14 +08:00
这就不是来讨论的啊,上来就贴到题目求代码,鄙视
ovjaywang
2013-05-19 00:39:48 +08:00
大二java基础类似题...找同学问问题的十之八九无所事事的...v2ex不是求代码的地方 走好
best1a
2013-05-19 21:23:23 +08:00
@ljbha007 推荐一部电影《十二怒汉》,你的行为和里面一个角色无异,可以看下
rebellion
2013-05-19 21:30:20 +08:00
@Insomnia
你这贱逼,当这里的人都是免费的劳动力吗
自己雇几个农民工帮忙吧
求人也不用点心
Insomnia
2013-05-20 19:12:06 +08:00
@ljbha007
@best1a
@ssynhtn

本来赶上过周末,缓了下都懒的搭理这事了,因为感觉根本没必要解释什么。但是看到明事理的出来回贴,不希望明事理的也被那些装B范 道德B攻击和侮辱就回复下。

这个题目根本不是面试,也不是作业,朋友给我讲的是叫 练习题。 而且这个也不是朋友找我直接帮他做题的,是我说的,改代码还不如重新给你写出来,然后你直接看代码学呢,所以才我让写的,我知道这里牛逼的人多,才想到在这里先请教的。

至于 @ljbha007 你还给我贴出来什么欺诈之类的英文解释,谁不知道欺诈的意思吗? 还用解释?还用英文解释?

上来就按照自己的思路把别人往一个方向想,是一件很二的事情。在我看来,也是非常不成熟的做法。


刚才正好在朋友圈看到下面这个,顺便贴出来吧:

一艘游轮遭遇海难,船上有对夫妻好不容易来到救生艇前,艇上只剩一个位子,这时,男人把女人推向身后,自己跳上了救生艇。女人站在渐沉的大船上,向男人喊出了一句话……
讲到这里,老师问学生:“你们猜,女人会喊出什么话?”

学生们群情激愤,都说“我恨你”、“我瞎了眼”……
这时老师注意到有个学生一直没发言,就向他提问,这个学生说:“老师,我觉得女人会喊——照顾好我们的孩子!”

老师一惊,问:“你听过这个故事?”学生摇头:“没有,但我母亲生病去世前,就是对我父亲这样说的!”老师感慨道:“回答正确。下面,大家听我把这个故事讲完。”

轮船沉没了,男人回到家乡,独自带大女儿。多年后,男人病故,女儿整理遗物时,发现了父亲的日记。原来,父亲和母亲乘坐游轮时,母亲已患了绝症。关键时刻,父亲冲向了那唯一的生机,他在日记中写道:“我多想和你一起沉入海底,可我不能。为了女儿,我只能让你一个人长眠在深深的海底……”

故事讲完,教室里沉默了,老师知道,学生们已经听懂了这个故事:世间的善与恶,有时错综复杂,难以分辨,所以请不要轻易做判断。
Insomnia
2013-05-20 19:12:46 +08:00
@rebellion 呵呵,你这种上来就骂别人贱逼的,我觉的是你智商有问题。
Insomnia
2013-05-20 19:17:53 +08:00
@mlhorizon 是的,我现在也越发的感觉到了。 在我们长大的这个恶心环境里,大家都先用恶意去揣测别人。
这也是我出国后感受最深的。 在一个健康的大环境下,大家彼此心怀善意,了解详情,做正确的事情,有个正确的价值观。
这是需要我们多久才能慢慢有的东西啊。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/69230

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX