🍏 개발일기

[오답노트] 숫자 나누기

보배 진 2025. 10. 30. 14:08

 

 

문제 다음의 코드를 보고, Console에 출력될 내용을 작성하세요

ArrayList인 Integer 타입의 리스트 datas가 선언되었다

그 리스트에 add() 메서드를 이용해 값 5개를 넣었다

 

System.out.println(datas); 를 통해 Console 창에 보이는 것처럼

datas가 갖고 있는 값들이 출력이 되었다.

 

for문은 -1부터 5보다 작은 4까지 반복하는 반복문이다

System.out.println(10/datas.get(i)); 에서는 10을 datas.get(-1) 부터 반복하며 

나누는 행위를 하기 시작했다

 

 

datas의 리스트는 0번방부터 시작을 하기 때문에

-1에서 에러가 발생해 catch문에 들어가게 되고

if(i<0) 이라는 조건문에 걸려 HELLO를 출력하게 된다

 

 

다시

i는 0이 되고 10/-5

i는 1이 되고 10/-1

i는 2가 되고 10/0

i는 3이 되고 10/1

i는 4가 되고 10/5

를 하게 된다

 

 

 

어떤 수를0으로 나누게 되면 에러가 발생하게 된다

java.lang.NullPointerException

https://bobaejin.tistory.com/67

 

 

 

 

그런데 나는 0으로 나누면 에러가 발생한다고 확실한 기억 때문에

음수로 나눌 수 있다는 생각을 못하고 0처럼 에러가 날 것이라고 생각했다.. ㅜㅜ..

 

 

전체 코드

package Q;

import java.util.ArrayList;

public class test {
	public static void main(String[] args) {
		ArrayList<Integer> datas = new ArrayList<Integer>();
		datas.add(-5);
		datas.add(-1);
		datas.add(0);
		datas.add(1);
		datas.add(5);
		System.out.println(datas);
		for(int i=-1; i<5; i++) {
			try {
				System.out.println(10/datas.get(i));
			} catch (Exception e) {
				if(i<0) {
					System.out.println("HELLO");
				} else {
					System.out.println("JAVA");
				}
			}
		}
	}
}

 

 

 

실행결과는

10을 0으로 나누었을 경우에만 에러가 발생하므로

catch문에 들어가 JAVA를 출력하였다

 

 

 

 

 


 

 

 

 

package test;
class A {
	int apple;
	String banana;
	void func(int num) {
		num++;
		this.apple++;
	}
}
public class TEST {
	public static void main(String[] args) {
		int apple;
		A a=new A();
		//System.out.println(apple);
		System.out.println(a.apple);
		int num=123;
		a.func(num);
		System.out.println(num);
		System.out.println(a.apple);
		// Q3. num의 값이 123으로 유지되는 이유는?
		// Q4. num의 값이 124로 변경되기위한 방법은?
		String str="banana";
		if(a.banana.equals(str)) {
			System.out.println("확인 1");
		} else {
			System.out.println("확인 2");
        }
	}
}

 

 Q4. num의 값이 124로 변경되기위한 방법은?

내가 쓴 답 : Q4. 배열로 변경하여 call by reference인 참조에 의한 호출을 해야 한다

 

주소값을 보내 값을 변경할 수 있도록 수정했지만

A클래스의 메서드를 int로 변경하여 값을 바꿀수도 있다

java.lang.NullP

 

ointerException

java.lang.ArithmeticException

java.lang.ArithmeticException

java.lang.ArithmeticException

java.lang.ArithmeticException