Java & JavaScript/Basic programming

Java) Ch03. 연산자와 형 변환

information-security-lab 2025. 3. 16. 02:55
목차
Ⅰ. 연습 문제

Ⅰ. 연습 문제

연습 문제 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를 사용한 결과 아래와 같은 답을 얻을 수 있었다.

Java 문자열 비교
해결 방법
결론

 

 

연습 문제 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);    
  }
}

 

 

 

끝.