ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • try-catch예제
    자바 2022. 3. 11. 10:58
    728x90

    [내가 작성한 코드]

       /*
    	 * 이체
    	 * @param amount: 이체 금액
    	 * @param otherAccount: 이체할 계좌번호
    	 * @return 이체 성공시 true 실패시 false
    	 */
    	public boolean transfer(int amount, BankAccount otherAccount)throws IllegalArgumentException,NullPointerException{
    		
    		if(amount<0 ||amount>balance)  throw new IllegalArgumentException();
    		if(amount<balance) {
    		    withdraw(amount);
    		    otherAccount.deposit(amount);
    		    return true;
    	    }else {
    		  return false;
    	    }		
    	
    	}

     

    [테스트 코드]

    public class BankTest {
    	
    	public static void main(String[] args) {
    		CheckingAccount	tonyAccount = new CheckingAccount(3000);
    		CheckingAccount steveAccount=new CheckingAccount(4000);
    		try {
    			tonyAccount.transfer(5000, steveAccount);
    			System.out.println("송금완료");
    		
    	    }catch (NullPointerException e) {
    			System.out.println("해당하는 계좌가 없습니다.");
    			System.out.println("송금실패");
    		} catch (IllegalArgumentException e) {
    			System.out.println("해당하는 금액을 보낼 수 없습니다.");
    			System.out.println("송금실패");
    		}
    	
    		try {
    			tonyAccount.transfer(2000, null);
    			System.out.println("송금완료");
    		
    	    } catch (NullPointerException e) {
    			System.out.println("해당하는 계좌가 없습니다.");
    			System.out.println("송금실패");
    		} catch (IllegalArgumentException e) {
    			System.out.println("해당하는 금액을 보낼 수 없습니다.");
    			System.out.println("송금실패");
    		}
    	}
    		
    }

    [다른 정답]

     public boolean transfer(int amount, BankAccount otherAccount) {
    		if(amount<0 ||amount>balance)  {
    			throw new IllegalArgumentException("해당하는 금액을 보낼 수 없습니다.");
    		}
    		if(otherAccount==null) {
    			throw new NullPointerException("해당하는 계좌가 없습니다.");
    		}
    		if(withdraw(amount)) {
    		    otherAccount.deposit(amount);
    		    return true;
    	    }else {
    		  return false;
    	    }		
    	
    	}

    출력을 이렇게 할 수도 있다.

    public class BankTest {
    	
    	public static void main(String[] args) {
    		CheckingAccount	tonyAccount = new CheckingAccount(3000);
    		CheckingAccount steveAccount=new CheckingAccount(4000);
    		try {
    			tonyAccount.transfer(5000, steveAccount);
    			System.out.println("송금완료");
    		
    	    }catch (NullPointerException || IllegalArgumentException e) {
    			System.out.println(e.getMessage());
    			System.out.println("송금실패");
                //코드를 줄이기 위해 한번에 사용될 수 있음!!!
    	    }
    		try {
    			tonyAccount.transfer(2000, null);
    			System.out.println("송금완료");
    		
    	    } catch (NullPointerException e) {
    			System.out.println(e.getMessage());
    			System.out.println("송금실패");
    		} catch (IllegalArgumentException e) {
    			System.out.println(e.getMessage());
    			System.out.println("송금실패");
    		}
    	}
    		
    }

    결과는 두개 모두 동일하다.

    [번외]

    scanner.nextInt(); 개행문자 엔터를 제거하지 않는다. 개행문자(엔터)전까지만 숫자로 입력받는다.

    scanner.nextLine(); 를 꼭 삽입해줘야한다.

    [삽입을 안해줬을경우]

    ->str에 엔터가 입력되어진다.

    [올바르게 한 경우]

    import java.util.Scanner;
    
    public class cheack {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Scanner scanner = new Scanner(System.in);
    		int num;
    		String str;
    		
    		System.out.print("num 입력:");
    		num=scanner.nextInt(); 
    		scanner.nextLine(); //이것을 꼭 삽입해줘야 한다.
    		
    		System.out.print("str입력:");
    		str=scanner.nextLine();
    		
    		System.out.println();
    		System.out.println("num:"+num);
    		System.out.println("str:"+str);
    		scanner.close();
    
    	}
    	
    }

    728x90

    '자바' 카테고리의 다른 글

    콘솔에서 실행할 수 있는 메모앱  (0) 2022.03.15
    JDBC연동하기 자바와 DBMS를 연결  (0) 2022.03.14
    Arrays.sort()  (0) 2022.03.11
    java.util패키지-Data클래스,Calendar클래스  (0) 2022.03.11
    Java 단축키 정리  (0) 2022.02.26
Designed by Tistory.