Java 코드 실행시 에러발생에 대해서 질문드립니다!!
갤3
자바 실행시
Exception in thread main java.lang.NullPointerException
at MyBank.getCustomer(MyBank.java:26)
at BankSystem.showMenu(BankSystem.java:47)
at BankSystem.init(BankSystem.java:10)
at BankSystem.main(BankSystem.java:82)
와 같은 에러가 발생합니다 -0-;; 자바를 배운지 얼마안되서 왜 에러가 발생하는지 모르겠습니다 ㅠ.ㅠ;;
어떤점이 잘못됬는지 설명좀 부탁드려요 ㅠ.ㅠ;;
class Account
{
long balance;
String id;
public Account()
{
}
public Account(String cusId, long cusBalance){
id = cusId;
balance = cusBalance;
}
void deposit(long a){
balance = a;
}
void withdraw(long a){
balance -= a;
}
String getID()
{
return id;
}
long getBalance(){
return balance;
}
}class Customer {
String name;
String id;
Account cusAccount = new Account();
public Customer()
{
}
public Customer(String cusId, String cusName, long cusBalance){
name = cusName;
id = cusId;
cusAccount.id=cusId;
cusAccount.balance=cusBalance;
}
void setAccount(Account account){
cusAccount = account;
}
Account getAccount(){
return cusAccount;
}
String getID()
{
return cusAccount.getID();
}
void setName(String cusName){
name = cusName;
}
String getName()
{
return name;
}
}
class MyBank {
int customersNum=0;
Customer[] customers = new Customer[100] ;
public MyBank()
{
}
void addCustomer(String cusId, String cusName, long cusBalance)
{
Customer customer = new Customer(cusId, cusName, cusBalance);
customers[customersNum++] = customer;
}
int getCustomersNum()
{
return customersNum+1 ;
&n }
Customer getCustomer(String ID)
{
Customer cust = new Customer();
for(int i = 0; i = customers.length; i++){
if (customers[i].getID() == ID)
cust = customers[i];
}
return cust;
}
Customer[] getAllCustomers()
{
return customers;
}
}
import java.io.*;
public class BankSystem {
private MyBank myBank;
public BankSystem() {
myBank = new MyBank();
showMenu();
}
public void showMenu() {
String menu = null;
String ID;
String name;
long balance;
do {
System.out.println(**** 메뉴를 입력하세요. ****);
System.out.println(* 1 --- 고객 등록 *);
System.out.println(* 2 --- 고객 보기 *);
System.out.println(* 3 --- 고객전체 보기 *);
System.out.println(* q --- 끝내기 *);
System.out.println(****************************);
System.out.print( );
menu = readFromKeyboard();
if (menu.equals(1)) {
System.out.print(ID를 입력하세요 : );
ID = readFromKeyboard();
System.out.print(이름을 입력하세요 : );
name = readFromKeyboard();
System.out.print(잔고를 입력하세요 : );
balance = Long.parseLong(readFromKeyboard());
myBank.addCustomer(ID, name, balance);
} else if (menu.equals(2)) {
System.out.print(고객 ID를 입력하세요 : );
ID = readFromKeyboard();
Customer cust = myBank.getCustomer(ID);
if (cust != null) {
System.out.println(cust.getID() + : + cust.getName() + :
+ cust.getAccount().getBalance());
} else {
System.out.println(등록된 고객이 없습니다.);
}
} else if (menu.equals(3)) {
Customer [] allCust = myBank.getAllCustomers();
for (int i = 0; i allCust.length; i++) {
System.out.println(allCust[i].getID() + : + allCust[i].getName()
+ : + allCust[i].getAccount().getBalance());
}
}
System.out.println();
} while (!menu.equals(q));
}
public String readFromKeyboard() {
String input = null;
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
input = br.readLine();
} catch (Exception ex) {}
return input;
}
public static void main(String [] args) {
BankSystem bankSystem = new BankSystem();
}
}
-
VanilLa
오우.. 유야짱 대단합니다. ㅎㅎ
-
적송
아핫 감사합니다 ㅋ
-
이퓨리한은지
Customer 객체가 100개로 잡혀있는게 문제군요... 100개로 잡아놨지만 사용자등록을 2개만 해놓으면 2개는 Customer객체가 생성되어 들어가지만 나머지 98개의 방은 null로 채워지게 됩니다.
그 상태에서 id를 비교할때 100개를 다 비교 할려고 하니 3번째 부터는 NullPointerException이 발생하게 되는 것입니다.
비교 할때 customers[i]를 Null체크를 하던지.. 아니면 배열외 ArrayList같은걸 사용하는