Java) Ch03. 연산자와 형 변환
목차
Ⅰ. 연습 문제
Ⅰ. 연습 문제
연습 문제 1)
다음 프로그램은 무엇때문에 오류가 발생하는지 서술하시오
class Ch03 {
public static void main(String[] args) {
int x = 10;
float y = 3;
int z = ++a + -b;
System.out.println(z);
}
}
풀이)
① 변수 x의 값은 정수이고 변수 y의 값은 실수
② 변수 x와 y를 산술 연산한 z의 값은 실수가 되어야 하므로 자료형이 float 또는 double이 되어야 함
③ 자동 형 변환에서는 작은 자료형을 큰 변수에 할당할 때 더 큰 자료형으로 변환됨
(byte → short → int → long → float → double)
④ int는 float보다 작은 자료형이므로 변환 시 에러가 발생함
⑤ 실제로 코드를 실행해보면 Main.java:10: error: incompatible types: possible lossy conversion from float to int라는 오류가 뜨는 것을 확인할 수 있음
⑥ 위의 코드를 정상 작동시키기 위해서는 아래와 같이 캐스팅 형 변환을 활용한 코드 수정이 필요함
class Ch03 {
public static void main(String[] args) {
int x = 10;
float y = 3;
int z = (int)(++a + -b);
System.out.println(z);
}
}
연습 문제 2)
다음 프로그램의 실행 결과는 무엇인지 서술하시오
public class Ch03 {
public static void main(String[] args) {
int x = 3, y = 2;
float z;
System.out.println(z = x % y);
}
}
풀이)
// 실행 결과
1.0
연습 문제 3)
다음 프로그램의 실행 결과는 무엇인지 서술하시오
public class Ch03 {
public static void main(String[] args) {
int x = 1;
System.out.println(++x + x);
}
}
풀이)
// 실행 결과
4
★ 연습 문제 4)
다음 프로그램의 실행 결과는 무엇인지 서술하시오
public class Ch03 {
public static void main(String[] args) {
String str1 = "HelloWorld";
String str2 = "Hello";
String str3 = "World";
String str4 = str2 + str3;
if (str1 == str4) {
System.out.println("str1과 str4는 같습니다.");
}
else {
System.out.println("str1과 str4는 같지 않습니다.");
}
}
}
풀이)
코드의 실행 결과는 아래와 같다.
// 실행 결과
str1과 str4는 같지 않습니다.
그런데 str1의 값과 str4의 값은 모두 "HelloWorld"인데 왜 else 문이 출력되는지 모르겠어서 생성형 ai를 사용한 결과 아래와 같은 답을 얻을 수 있었다.
연습 문제 5)
다음 프로그램의 실행 결과로 나오는 출력값은 무엇인지 작성하시오
public class Ch03 {
public static void main(String[] args) {
int a = 5, b = 10, c = 15;
int d = (a + b) * c;
System.out.println(d);
}
}
풀이)
// 실행 결과
225
연습 문제 6)
"HelloWorld"라는 문자열을 입력받아 아래의 결과를 출력하는 코드를 작성하시오
< 출력 결과 >
문자열 입력 : HelloWorld
출력 결과 : HelloWorld
풀이)
import java.util.Scanner
public class Ch03 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String str1 = input.next();
System.out.println("문자열 입력 : " + str1);
System.out.println("출력 결과 : " + str1);
}
}
연습 문제 7)
다음 프로그램의 실행 결과를 작성하시오
public class Ch03 {
public static void main(String[] args) {
int x = 5;
int y = 6;
int z = ++x + -y;
System.out.println(z);
}
}
풀이)
// 실행 결과
0
연습 문제 8)
다음의 실행 결과를 참고하여 키보드로 두 정수를 입력받아, 두 수의 합과 평균을 구하는 프로그램을 작성하시오
< 실행 결과 >
숫자1 = 20
숫자1 = 30
합계 = 50
평균 = 25.0
풀이)
import java.util.Scanner
public class Ch03 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("숫자1을 입력하세요 : ");
int num1 = input.nextInt();
System.out.println("숫자2를 입력하세요 : ");
int num2 = input.nextInt();
int sum = num1 + num2;
float average = (num1 + num2) / 2;
System.out.println("숫자1 = " + num1);
System.out.println("숫자2 = " + num2);
System.out.println("합계 = " + sum);
System.out.println("평균 = " + average);
}
}
끝.
