Я почти нахожусь в доме для этого проекта и попал в непреодолимую скорость. У меня есть основной и ниже метод, который выглядит примерно так:Присвоение имени и учетной записи проекту BankAccount
import java.util.Scanner;
public class Proj3
{
public static void main (String []args)
{
BankAccount cust1 = new Proj3().createAccount();
BankAccount cust2 = new Proj3().createAccount();
BankAccount cust3 = new Proj3().createAccount();
}
public BankAccount createAccount()
{
Scanner kb = new Scanner (System.in); //input for Strings
Scanner kb2 = new Scanner (System.in); //input for numbers
String strName; //Holds account name
String strAccount; //Holds account number
String strResponse; //Holds users response to account creation
double dDeposit; //Holds intial deposit into checking
BankAccount b1;
{
System.out.print ("\nWhat is the name of the account? ");
strName = kb.nextLine();
b1.setName(strName);
while (strName.length()==0)
{
System.out.print ("\nPlease input valid name.");
System.out.print ("\nWhat is the name of the account?");
strName = kb.nextLine();
}
System.out.print ("Would you like to create this account? (Y or N)");
strResponse = kb.nextLine();
strResponse = strResponse.toUpperCase();
if (strResponse.equals("Y"))
{
BankAccount b1 = new BankAccount(strName, strAccount, dDeposit);
}
else
{
b1 = null;
}
и у меня есть класс BankAccount, который выглядит примерно так:
import java.util.Scanner;
public class BankAccount
{
private String name; //Holds name of customer
private String account; //Holds account number of
private double checkingAccount; //Holds balance for checking
private double savingsInterestRate; //Holds annual interest rate on savings
private double savingsAccount; //Holds balance for savings
private int savingsDays; //Holds days for calc. savings interest
private double totalEarnedInterest; //Holds total interest earned
public BankAccount (String name, String account, double amount)
{
setName(name);
setAccount(account);
setChecking(amount);
}
public void setName (String name)
{
this.name = name;
}
Как передать все введенные пользователем данные в их корр. ответы на вопросы в моем классе BankAccount? В конце я хотел бы использовать метод toString для отображения всей информации на экране.
Я знаю, проблема b1.setName(strName)
, потому что я не инициализировал b1, но как бы я это сделал? Любая помощь в этом вопросе была бы весьма признательна.
Может быть, я недоразумение, но не вы уже делаете, что здесь: 'BankAccount b1 = новый BankAccount (strName, strAccount, dDeposit)'? –
@PaulRichter Но он вызывает setName по нулевой ссылке выше. Почему вы звоните в сеттер? Почему бы просто не удалить эту строку? – thatidiotguy
Вы вызываете setName() дважды ... один раз на неинициализированный экземпляр BankAccount (который выдает NullPointer) и второй раз, когда вы передаете String в конструктор. Вы уже делаете то, что вы просите иначе, теперь вам просто нужно написать метод toString и распечатать переменные класса. – proulxs