▼정답
[Checked Exception]
・IOException
・SQLException
[Unchecked Exception]
・Runtime Exception(실시간) = UnChecked Exception :
・ArrayIndexOutOfBound : 범위를 벗어남
예시)
public static void main(String[] args){
int[] arr = {1,2,3};
for(int i = 0; i < 4; i++)
System.out.println(arr[i]); // 인덱스 값 3은 예외를 발생시킴 (0,1,2까지 메모리 생성되어 있음.)
・ClassCastException : 자식=부모일 때 나오는 에러
예시)
class Board {
}
class PBoard extends Board {
}
public class ClassCastException {
public static void main(String[] args) {
Board pbd1 = new PBoard();
PBoard pbd2 = (PBoard) pbd1; // Ok!
System.out.println("..intermediate location..");
Board ebd1 = new Board();
PBoard ebd2 = (PBoard) ebd1; // Exception!
}
}
・NullPointerException : str.length(); 에러
예시)
import java.util.Scanner;
public class NullPointerException {
public static void main(String[] args) {
String str = null;
System.out.println(str); // null 출력
int len = str.length(); // Exception!
}
}
・ArithmeticException
・InputMismatchException
▼정답
예외 발생 지점에서 예외를 처리하지 않으면 해당 메소드를 호출한 영역으로 예외가 전달된다.
public static void main(String[] args) throws Exception {...}
→ main을 호출하는 JVM한테 exception을 던진다.
JVM은 콜스택 보여주면서 오류 띄워줌
public static void function1() throws InputMismatchException {...}
→ function1을 호출하는 main한테 exception을 던진다.
class A{
}
public class Test {
public static void main(String[] args) {
A a = new A();
System.out.println(a); // String s = String.valueOf(x); -> s가 주소 뿌림
}
}
▼정답
?
- 클래스 Person
* 필드 : 이름, 나이, 주소 선언
- 클래스 Student
* 필드 : 학교명, 학과, 학번, 8개 평균평점을 저장할 배열로 선언
* 생성자 : 학교명, 학과, 학번 지정
* 메소드 average() : 8개 학기 평균평점의 평균을 반환
- 클래스 Person과 Student
- 프로그램 테스트 프로그램의 결과 : 8개 학기의 평균평점은 표준입력으로 받도록한다.
이름 : 김다정
나이 : 20
주소 : 서울시 관악구
학교 : 동양서울대학교
학과 : 전산정보학과
학번 : 20132222
----------------------------------------
8학기 학점을 순서대로 입력하세요
1학기 학점 → 3.37
2학기 학점 → 3.89
3학기 학점 → 4.35
4학기 학점 → 3.76
5학기 학점 → 3.89
6학기 학점 → 4.26
7학기 학점 → 4.89
8학기 학점 → 3.89
----------------------------------------
8학기 총 평균 평점은 4.0375점입니다.
▼정답
import java.util.Scanner;
class Person1 {
String name;
int age;
String adr;
public Person1(String name, int age, String adr) {
this.name = name;
this.age = age;
this.adr = adr;
}
}
class Student1 extends Person1 {
String sch;
String maj;
int num;
double average = 0;
double[] avg = new double[8];
public Student1(String name, int age, String adr, String sch, String maj, int num) {
super(name, age, adr);
this.sch = sch;
this.maj = maj;
this.num = num;
}
public double average() {
return this.average / avg.length;
}
}
public class Test56 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Student1 p = new Student1("김다정", 20, "서울시 관악구", "동양서울대학교", "전산정보학과", 20132222);
System.out.println("이름: " + p.name);
System.out.println("나이: " + p.age + "\n");
System.out.println("주소: " + p.adr);
System.out.println("학교: " + p.sch);
System.out.println("학과: " + p.maj);
System.out.println("학번: " + p.num);
System.out.println("8학기 학점을 순서대로 입력하세요" + "\n");
for (int i = 1; i <= p.avg.length; i++) {
double input = sc.nextDouble();
System.out.print(i + "학기 학점 → " + input + "\n");
p.average += input;
}
System.out.println("8개 학기의 평균 평점: " + p.average());
}
}