개발/Java

[Java 06] 자바 연습문제 (2) (조건문, 반복문)

hongtaekki 2021. 5. 28. 22:46

제가 듣고 있는 자바 강의 연습과제를 통해 조건문과 반복문을 연습해보겠습니다.

Exam 01

영문자 모음의 아스키 코드 값을 아래의 출력형식에 맞추어 화면에 출력하세요.

-----------------------------
영문자 모음의 아스키 코드 값
-----------------------------
A = 65
E = 69
I = 73
O = 79
U = 85
-----------------------------

 

문제풀이

public class Exam01 {
  public static void main(String[] args) {
      String alpa = "AEIOU";
      for(int i = 0; i < alpa.length(); i++) {        // alpa.length는 String alpa의 문자열 길이
              char askii = alpa.charAt((int)i);        // alpa.chatAt(i)은 "AEIOU"의 문자열 중 i번째 문자를 선택하는 메소드
              System.out.println(askii + " = " + (int)askii); 
      }
  }
}

 

실행 결과

A = 65
E = 69
I = 73
O = 79
U = 85

 

Exam 02

(Exam 01 문제응용) 입력받은 영문자의 아스키 코드값을 출력하는 코드를 작성하세요.

 

문제풀이

import java.util.Scanner;

public class Exam02 {
  public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);    // 키보드 입력을 위해 스캐너
      System.out.print("영문자를 입력해주세요 : ");        
      String alpa = sc.nextLine();    // 입력받은 문자열을 String alpa에 저장.

      for(int i = 0; i < alpa.length(); i++) {    //반복문으로 입력받은 문자열의 문자 한개씩을 선택해 아스키 코드로 출력
          char askii = alpa.charAt((int)i);
          System.out.println(askii + " = " + (int)askii);
      }
  }
}

 

실행결과

영문자를 입력해주세요 : ILoveJava
I = 73
L = 76
o = 111
v = 118
e = 101
J = 74
a = 97
v = 118
a = 97

 

Exam 03

(Exam 01 문제응용) 입력받은 영문자의 아스키 코드값을 출력하는 코드를 작성하세요.

 

문제풀이

import java.util.Scanner;

public class Exam03 {
  public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      System.out.print("초를 입력하세요 : ");
      int time = sc.nextInt();
      sc.close();

      int hour = time / 3600;
      int minute = (time % 3600) / 60;
      int second = (time % 3600) % 60;

      // 3600초를 입력하면 '1시간 0분 0초'를 출력하는게 아니라 1시간으로 출력되게 하기 위한 조건문 
      if (hour != 0) {
          System.out.printf("결과출력 : %d시간 ", hour);
      }
      if (minute != 0) {
          System.out.printf("%d분 ", minute);
      }
      if (second != 0) {
          System.out.printf("%d초", second);
      }
  }
}

 

실행결과

초를 입력하세요 : 36000
결과출력 : 10시간 

 

Exam 04

아래 <예시>처럼 하나의 정수를 입력 받고 정수를 나눌 수를 입력 받은 다음 몫과 나머지를 화면에 출력하세요.

정수를 입력하세요 : 90
나눌 수를 입력하세요 : 4
몫 : 22
나머지 : 2

 

문제풀이

import java.util.Scanner;

public class Exam04 {
  public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);

      System.out.print("정수를 입력하세요 : ");
      int num1 = sc.nextInt();
      System.out.print("나눌 수를 입력하세요 : ");
      int num2 = sc.nextInt();
      sc.close();

      System.out.printf("몫 : %d\n", num1/num2);
      System.out.printf("나머지 : %d", num1%num2);
  }
}

 

실행결과

정수를 입력하세요 : 90
나눌 수를 입력하세요 : 4
몫 : 22
나머지 : 2

 

Exam 05

1달러는 현재 1217.20원 입니다. 화면에서 달러를 입력 받아 원화로 보여주는 프로그램을 작성하세요.

 

문제풀이

import java.util.Scanner;

public class Exam05 {
  public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      System.out.print("달러를 입력하세요 : ");
      double dollor = sc.nextDouble();
      double won = 1217.20;

      System.out.printf("원화 : %.2f", dollor*won);    //%.2f ==> 소수점 둘째 자리까지만 출력
  }
}

 

실행결과

달러를 입력하세요 : 12.52
원화 : 15239.34

 

Exam 06

알파벳이 모두 몇 자인지 화면에 출력하시오.

 

문제풀이

public class Exam06 {
  public static void main(String[] args) {

      int cap = (int)'Z' - (int)'A' + 1;        //알파벳 대문자 개수
      int small = (int)'z' - (int)'a' + 1;    //알파벳 소문자 개수
      System.out.printf("개수? : %d", cap + small); 
  }
}

 

실행결과

개수? : 52

 

Exam 07

화면에서 알파벳을 입력 받아 대문자는 소문자로 소문자는 대문자로 출력하는 프로그램을 작성하시오.

 

문제풀이

public class Exam07 {
  public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      System.out.print("입력(알파벳) : ");
      String inputStr = sc.nextLine();

      for (int i = 0; i < inputStr.length(); i++) {    //입력받은 알파벳을 한 글자씩 대문자 또는 소문자로 변경
          char alpa = inputStr.charAt(i);                // 입력받은 문자열의 i번째 문자를 선택해 대/소문자 변경

          if (64 < (int) alpa && (int) alpa < 91) {    // 대문자를 소문자로 변경
              int small = (int) alpa + 32;
              System.out.print((char) small);
          }
          if (96 < (int) alpa && (int) alpa < 123) {    // 소문자를 대문자로 변경
              int cap = (int) alpa - 32;
              System.out.print((char) cap);
          }
      }
      sc.close();
  }
}

 

실행결과

입력(알파벳) : AaBbCcDdEeFfGg
aAbBcCdDeEfFgG

 

Exam 08

9,480원어치 물건을 사고 10,000원을 지불했을 때의 거스름돈과 1000원, 500원, 100원, 50원, 10원의 개수를 출력하는 프로그램을 작성하시오. 이때 물건값과 거스름돈은 키보드로 입력할 수 있어야 한다.

물건값을 입력하세요 : 5480
지불한 돈의 액수를 입력하세요 : 10000
거스름돈 : 4520원
1000원 : 4개
500원 : 1개
100원 : 0개
50원 : 0개
10원 : 2개
물건값을 입력하세요 : 5480
지불한 돈의 액수를 입력하세요 : 5000
480원이 부족합니다

 

문제풀이

  import java.util.Scanner;

  public class Exam08 {
  public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      System.out.print("물건값을 입력하세요 : ");
      int cost = sc.nextInt();
      System.out.print("지불한 돈의 액수를 입력하세요 : ");
      int pay = sc.nextInt();
      sc.close();

      int change = pay - cost;
      if (change >= 0) {
          System.out.printf("거스름돈 : %,d원\n", change);

          System.out.printf("1,000원 : %d개\n", change / 1000);
          System.out.printf("500원 : %d개\n", (change % 1000) / 500);
          System.out.printf("100원 : %d개\n", ((change % 1000) % 500) / 100);
          System.out.printf("50원 : %d개\n", (((change % 1000) % 500) % 100) / 50);
          System.out.printf("10원 : %d개", ((((change % 1000) % 500) % 100 % 50) / 10));

      } else {
          System.out.printf("%d원이 부족합니다", -change);
      }
  }
}

 

실행결과

물건값을 입력하세요 : 5280
지불한 돈의 액수를 입력하세요 : 10000
거스름돈 : 4,720원
1,000원 : 4개
500원 : 1개
100원 : 2개
50원 : 0개
10원 : 2개
물건값을 입력하세요 : 5480
지불한 돈의 액수를 입력하세요 : 5000
480원이 부족합니다