일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 웹브라우저 수용도
- 크롤링 오류
- 예외
- 크롤링
- DoitSQL입문
- Doit입문SQL
- 자바 예외
- 예제
- 자바 오류
- 페이지분석
- 우아한테크
- html
- 키-값 데이터베이스
- SQL
- 함수
- 생성자
- HTML역사
- 배열 3요소
- DoitSQL
- 배열 예제
- 자바
- 함수 선언
- R1C3
- DoIt
- 웹 브라우저 전쟁
- dbms
- 데이터베이스
- SQL입문
- 숫자형식오류
- 숫자 형식
Archives
- Today
- Total
프로그래밍
[자바 응용 문제] 오답 본문
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
반응형
'자바 > 자바 예제 풀이' 카테고리의 다른 글
[자바 응용 문제] 예외처리 (0) | 2023.05.30 |
---|---|
[자바 응용 문제] 추상클래스와 인터페이스 (0) | 2023.05.30 |
[자바 응용 문제] 파일입출력 (0) | 2023.05.26 |
[자바 응용 문제] 스레드 (0) | 2023.05.26 |
[자바 응용 문제] 자바 복습 문제 (0) | 2023.05.26 |
Comments