【发布时间】:2015-03-21 00:36:12
【问题描述】:
我正在为我的 Java 课程开发银行账户程序。我对此还是很陌生,这是我们第一个使用数组的任务。所以请原谅任何菜鸟的错误哈哈。目前,该分配需要一组 3 个银行帐户。我需要 3 节课;银行(包含 bankAcct myAcct[] = new bankAcct)、bankUser 和 bankAcct(包含我的提款、存款和查看余额方法)。到目前为止,每当我尝试查看余额、存款或取款时,我的 proChoice 方法中都会出现 NullPointerException。错误在我的 User 类中,我将在代码中留下 cmets 以准确显示位置。请,任何帮助将不胜感激。我正在阅读我的教科书,但并没有真正找到对我的特定问题有帮助的东西。提前谢谢你。
bankAcct 类
import java.util.Scanner;
public class bankAcct
{
private double Bal;
private int acctNum;
private String name;
Scanner scannerObject = new Scanner(System.in);
public bankAcct(int pacctNum, double pBal, String pname) {
pBal = Bal;
pacctNum = acctNum;
pname = name;
}
public void makeDeposit()
{
System.out.print( "Hello " + name + ", please, enter amount to deposit $");
double lDep;
lDep = scannerObject.nextDouble();
Bal = Bal + lDep;
System.out.println( " You have deposited $" + lDep);
System.out.println( " Your new balance is $" + Bal);
}
public void makeWithdrawal()
{
System.out.print( "Hello " + name + ", please, enter amount to withdraw $");
double lWDraw;
lWDraw = scannerObject.nextDouble();
if (lWDraw <= Bal){
Bal = Bal - lWDraw;
System.out.println( "You have withdrawn $" + lWDraw);
System.out.println( "Your new balance is $" + Bal);
}else{
System.out.println("Insufficient funds!");
}
}
public void dispBal()
{
System.out.println( "Your current balance is $" + Bal);
}
public void setAcctNum(int pacctNum)
{
pacctNum = acctNum;
}
public int getAcctNum()
{
return acctNum;
}
public void setName(String pname)
{
pname = name;
}
public String getName()
{
return name;
}
}
银行类
import java.util.Scanner;
public class Bank
{
int max = 3;
int count;
bankAcct myAcct[] = new bankAcct[max];
bankUser user = new bankUser();
Scanner scannerObject = new Scanner(System.in);
public void openAcct()
{
String lname;
if (count >= max){
System.out.println("Not accepting new customers at this time.");
}else{
System.out.println("Please enter your name: ");
lname = scannerObject.nextLine();
myAcct[count] = new bankAcct(count + 1, 0, lname);
count++;
System.out.println("Thank you " + lname + ", your account number is: " + count);
}
}
public int findAcct()
{
int lnum = -1;
System.out.println("Greetings, please enter your account number: ");
lnum = scannerObject.nextInt();
for(count = 0; count < max; count++){
if (count == lnum)
return count;
}
return lnum;
}
public void seeBal()
{
int lfound = findAcct();
if (lfound == -1)
{
System.out.println("Error!");
}else{
myAcct[lfound].dispBal();
}
}
void Deposit()
{
int lfound = findAcct();
if (lfound == -1)
{
System.out.println("Error!");
}else{
myAcct[lfound].makeDeposit();
}
}
void Withdrawal()
{
int lfound = findAcct();
if (lfound == -1)
{
System.out.println("Error!");
}else{
myAcct[lfound].makeWithdrawal();
}
}
}
用户类
import java.util.Scanner;
public class bankUser
{
public static void main(String[] args)
{
Bank myBank = new Bank();
Scanner scannerObject = new Scanner(System.in);
int Choice;
do
{
dispMenu();
Choice = getChoice(scannerObject);
proChoice(Choice, myBank); ***//Error occurring here***
}
while (Choice !=0);
}
public static void dispMenu()
{
System.out.println( "|==================================|");
System.out.println( "| TONY'S FIRST NATIONAL BANK |");
System.out.println( "|***********Menu Options***********|");
System.out.println( "|__________________________________|");
System.out.println( "| Press 1 To Open New Account |");
System.out.println( "| Press 2 To View Balance |");
System.out.println( "| Press 3 To Make Deposit |");
System.out.println( "| Press 4 To Make Withdrawal |");
System.out.println( "| Press 0 to Exit |");
System.out.println( "|__________________________________|");
System.out.println( "| Please Make Selection Now... |");
System.out.println( "|==================================|");
}
static int getChoice(Scanner scannerObject)
{
int pChoice, Choice;
pChoice = scannerObject.nextInt();
Choice = pChoice;
return Choice;
}
static void proChoice(int Choice, Bank myBank)
{
switch (Choice)
{
case 1: myBank.openAcct();
break;
case 2: myBank.seeBal(); //***Error Here***
break;
case 3: myBank.Deposit(); //***Error Here***
break;
case 4: myBank.Withdrawal(); //***Error Here***
break;
case 0: System.out.println( "Thank you, come again.");
break;
}
}
}
【问题讨论】:
-
1) 您给出了具体的问题描述,包含了源代码,并且清楚地努力调试 - 好!谢谢! 2)我添加了“java”标签来指定你的语言——这有助于你更快地获得更好的答案。 3) 在这种情况下,我强烈建议您使用调试器。我不知道您使用的是哪个 Java 编译器/调试器/(IDE?)。但绝对要单步执行代码,准确找到 NPE 发生的位置 - 并简单地查看此时哪个变量未初始化。祝你好运!
-
谢谢!我正在使用 Eclipse。我会彻底完成它。我可能遗漏了一些明显的东西,这周我有 5 个期中考试。所以,我有点筋疲力尽了,哈哈。再次感谢!
标签: java arrays nullpointerexception