프로그래밍

[자바 응용 문제] 오답 본문

자바/자바 예제 풀이

[자바 응용 문제] 오답

시케 2023. 5. 27. 01:01
728x90
반응형

오답

1 public static void main(String[] args) {
2 	ArrayList datas=new ArrayList();
3 	for(int i=1;i<=5;i++) {
4 		datas.add(i); // [1,2,3,4,5]
5 	}
6 	int total=0;
7 	for(int v:datas) {
8 		total+=v;
9 	}
10 	System.out.println("total: "+total); // total: 15
11 	}

위의 코드는 7번 라인에서 문제가 발생한다

배열리스트는 여러가지 자료형을 넣을 수 있는데 7번 라인의 for each문은 int 타입으로 규정했기 때문이다

해당 오류는 <제네릭>으로 자료형을 강제하거나 형변환을 함으로써 해결할 수 있다

 

문제 해결 코드

public static void main(String[] args) {

	ArrayList<Integer> datas = new ArrayList<Integer>();
	for (int i = 1; i <= 5; i++) {
		datas.add(i); // [1,2,3,4,5]
	}
	int total = 0;
	for (int v : datas) {
		total += v;
	}
	System.out.println("total: " + total); // total: 15
}

 

자바에서는 나누기 "/" 연산을 할 때 나누는 수가 0이 될 수 없지만 음수는 가능하다

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");
			}
		}
	}
}
i		i<5		10 / datas.get(i)	i<0
-----------------------------------------------------------------------
-1		T			Error		T
0		T			-2
1		T			-10
2		T			Error		F
3		T			10		
4		T			2		
5		F

[ Console ]

[-5, -1, 0, 1, 5]

HELLO

 -2
-10
JAVA
10
2

 

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);
        
		String str="banana";
		if(a.banana.equals(str)) {
			System.out.println("확인 1");
		}
		else {
			System.out.println("확인 2");
		}
	}
}

위 코드에서 num값이 123인 이유는 자바의 함수는 값을 넘겨주는 call by value이기 때문이다

num 값이 124로 변경되기 위해서는 num을 증가시킨 후 return 한다

 

26라인 if문에서 오류가 나는 이유는 a.banana가 NULL인 상태이기 때문이다

따라서 a의 멤버변수인 banana를 생성자를 활용하여 초기화하여야 한다

 

 

 

 

728x90
반응형
Comments