728x90
반응형
728x90
반응형
숫자게임 반복 숫자가 나오지 않을 경우 try - catch로 게임을 재시작하도록 만드는 프로그램 아래의 코드처럼 do-while을 사용하였고 Scanner 함수를 사용하여 일반적인 숫자입력게임을 만들었다. 차이점(애먹었던 점) Scanner 클래스를 try문안에 써주어야 정상작동된다. 새로운 Scanner의 메모리가 할당되고 생성자를 통해 전에 넣어주었던 값을 초기화를 시켜야 무한반복을 막아준다. catch구문에는 오류가 날 경우 출력하고 싶은 문구를 적고 continue를 써주면 반복문이 다시 반복된다. public static void main(String[] args) { Random r = new Random(); int ran = r.nextInt(100)+1; System.out.printl..
사용자 정의 예외처리 요즘 유행하는 비트코인을 가져와서 간단한 사용자 정의 예외처리 예시를 만들었다. 입금된 비트코인 잔고보다 인출되는 비트코인 잔고가 더 많으면 throws로 지정된 오류 클래스로 보내기로 했고 오류 클래스에서 지정된 연산 수행 후에 toString 클래스로 오류전용 지정 문구를 출력하도록 만들었다. class CoinAccount extends BalanceInsufficientException{ private double BTCaccount; private double ETHaccount; public CoinAccount(double bTCaccount, double eTHaccount) { super(); BTCaccount = bTCaccount; ETHaccount = eTH..
메서드에 예외 선언하기 예외를 처리하는 방법은 3가지가 있는데 본인이 (1)직접 해결(try - catch)하거나 (2)예외를 선언하여(예외 떠넘기기) 다른쪽에 넘기거나, 혹은 (3)은폐(catch문에 공백으로 남기기)하는 법이 있다. 메서드에 예외를 선언한다는 것은 아래와 같이 메서드에 throws를 붙여 발생할 수 있는 에러의 종류를 나열하는 것이다 아래 메서드 method에는 arithmeticexceptoin이나 (or) index초과 오류가 날 수도 있다는 것을 정의 따라서 메서드안에서 아래의 에러를 처리할 수 있는 try - catch를 선언하던지 혹은 호출한 쪽으로 에러를 떠넘기던지 둘 중에 하나의 액션을 취해야 한다. 주의할 점은 main안의 throw가 아닌 throws로 s를 붙여서 선..
오류 종류 컴파일 에러: 컴파일 시 생기는 오류 (system.out.print => s의 소문자 같은 컴파일 원인 오류) 논리적 에러: 실행은 되지만 의도와 다르게 동작되는 오류 런타임 에러: 시스템을 실행할 때 생기는 오류 (int[] => 빈 공백을 사용할 시 오류등이 런타임 에러) 런타임에러의 종류 에러(error): 수습 불가능한 심각한 오류; out of memory error; OOME 예외(exception): 코드에 의해 수습될 수 있는 다소 미약한 오류 예외처리 정의: 오류를 대비한 코드를 작성 목적: 비정상적인 프로그램 종료를 막고 오류 대비 코드로 재실행 예외처리 시 try - catch 문 사용 try { //예외가 발생할 수도 있는 코드 } catch (Exception e) {..
절대경로 절대경로란 최초의 시작점으로 부터 경유한 경로를 전부 기입하는 방식 기입 방식은 아래와 같다 C:\Users\UserID\Desktop\test.txt 상대경로 상대적인 경로 즉, 절대경로의 주소를 참조하여 상대경로를 절대경로로 바꾸어 전달 상대경로 이름: test.txt 절대경로 = C:\Users\UserID\Desktop\test.txt 참조되어 만들어진 상대경로 = C:\Users\UserID\workspace\Test\src\test.txt File 문법 getPath() : File에 입력된 경로 리턴 getAbsolutePath() : File에 입력된 절대 경로 리턴 (파일명을 입력하면 그 파일명에 맞는 경로 리턴) getCanonicalPath() : 동일하게 File에 입력된 ..
섯다 카드 한벌 생성 섯다카드 클래스 자체를 array로 지정하여 선언 지정한 후 if로 조건문을 선언하여 숫자 조건 추가 숫자를 배정할 때 객체를 선언하여 그 멤버변수에 숫자를 배정 위의 메인클래스에서 for문으로 출력 // 섯다카드 20장을 포함하는 섯다카드 한벌(sutdadeck클래스)를 정의한 것. // 섯다카드 20장ㅇ을 담는 sutdacard배열을 초기화하시오. // 섯다카드는 1-10까지 숫자가 적힌 카드가 한장씩 있고 1,3,8일 경우 둘증의 한장은 Kwang이어야 함 // public class Chap7 { public static void main(String[] args) { SutdaDeck deck = new SutdaDeck(); for(int i = 0; i
인터페이스 default & static 만약 interface에 추상메서드를 추가하면 다른 interface의 메서드를 쓰는 클래스에 추가된 추상메서드를 전부 선언해야하는 불편함이 있다. 따라서 default값을 넣고 {} 중괄호를 붙여 선언하면 원하는 클래스에만 그 추상메서드를 선언할 수 있다 중괄호를 선언해서 몸통을 만들었기 때문에 생기는 문제점 2가지 여러 인터페이스 디폴트 메서드간의 충돌 이 경우 인터페이스를 구현한 클래스에서 디폴트 메서드를 오버라이딩 해야한다. 디폴트 메서드와 조상 클래스 메서드간의 충돌 이 경우 조상 클래스의 메서드가 상속되고 디폴트 메서드는 무시된다. class methodtest implements iftest{ public void method() { } } class..
인터페이스를 자손 클래스로 만들기 아래와 같이 abstract 클래스는 extends로 연결하고 implements로 인터페이스 자손으로 연결 class Fight extends Unit implements marine{ //인터페이스를 implements로 묶어 손자 클래스로 변환 int x; int y; } abstract class Unit{ } interface marine{ void move(int x, int y); void attact(); 인터페이스 장점 두 대상(객체)간의 연결, 대화, 소통을 돕는 중간역활 아래와 같이 선언(설계 - 껍데기)와 구현(실행 - 알맹이)을 분리시킬 수 있게 도와줌 즉 붙어있는 경우 변경이 불리하지만, 아래처럼 따로 분리되있는 경우 알맹이만 바꿀 수 있으므로 ..