[질문]예외처리...
남은
제가 예외처리를 잘모르거든요., 사실 자바를 잘 모르져,하하.ㅡㅡ
암튼 제가 아랜 짠 입력 받아서 저장하는 스택인데 예외처리 부분 사진 첨부할테니.. 좀 알려주세요.. 친절한 설명 부탁드립니다.ㅋ
글올리고 더 쓰는데 생각보다 많이 오류가있네요 예외처리를 하고나서 정말 도움이 필요합니다. ㅠㅠ
import java.io.*;
import java.util.*;
public class Stack {
public int size ; //배열 크기
private int stack[] ;//배열생성
private int pos ; //현재읽고 있는 위치 public Stack(int j) {
stack = new int[size] ;
size=j ;
pos=0 ;
}
public void push(int a) throws UserException{
if (full()==true) { throw new UserException(Stack is full);
}
stack[++pos] = a ;//full이 아닐경우 pos 1증가하고 a 삽입
}
public int pop() throws UserException{
if (empty()==true) { throw new UserException(Stack is empty);
//System.out.println(Stack empty);
}
return stack[pos--]; //empty 가 아닐 경우 pos 1감소
}
public boolean full() {
return (pos = size-1); //pos로 스택이 full인지 확인
}
public boolean empty() {
return (pos == 0)
; // pos로 스택이 비었는지 확인
}
public int peek() {
int i;for ( i=pos; i0; i--){
System.out.println(stack[i]);
}
return stack[pos];
}
public int Size() {
return size;
}public static void main (String args[]){
int menu;
int input;
int input_size;
Scanner scan = new Scanner(System.in);
System.out.print(Input size : );
input_size=scan.nextInt();
Stack st= new Stack(input_size);//객체 생성
do {
System.out.println(************);
System.out.println( 1 .P U S H );
System.out.println( 2. P O P );
System.out.println( 3. S I Z E );
System.out.println( 4. RESULT );
System.out.println( 5. E X I T );
System.out.println(************);
System.out.print(Menu Number : );
menu=scan.nextInt();
switch(menu){
case 1:
System.out.print(Input number : );
input = scan.nextInt();
System.out.println();
try{
st.push(input);
} catch (Exception ex){
System.out.println(ex.getMessage());
ex.printStackTrace();
}
break;
case 2:
try{
System.out.println(POP : + st.pop());
} catch (Exception ex){
System.out.println(ex.getMessage());
ex.printStackTrace();
}
break;
case 3:
System.out.println(Stack is size : + st.Size());
break;
case 4:
System.out.println(top = + st.peek());
break;
case 5:
System.exit(0);
}
}while(menu!=5);}
}
class UserException extends Exception {
public UserException(String name){
super(name);
}
}
-
박애교
아 감사합니다. ㅎㅎ 예외처리를 넣기전에 안그랬는데 넣고 나서 저렇게 되서 감사합니다.
-
하예진
이렇게 바꾸셔야 할것 같습니다..^^
윗분말씀대로 배열의 사이즈가 정해지지 않거나, 배열의 범위를 넘어서는 접근을 햇을때, 저런 예외가 발생하거든요.. -
설화
public Stack(int j) {
stack = new int[size] ;
size=j ;
pos=0 ;
}
돌려보지는 않고 눈으로만 봤는데요. 이 부분을
public Stack(int j) {
size=j ;
stack = new int[size] ;
pos=0 ;
} -
풍란
배열의 size() 문제지 예외처리 문제가 아닌데여-- 오류만 것만 보면요