simDev1234
심플하고 차분하게
simDev1234
전체 방문자
오늘
어제
  • 분류 전체보기
    • Computer Science
      • Basic Math
      • Data Structure
      • Algorithm
      • Database
      • OS
    • Language
      • Java
      • Kotlin
      • SQL
    • Framework
      • Spring
      • Orm&Mapper
      • 프로젝트로 스프링 이해하기
      • 스프링 라이브러리
    • Infra
      • Cloud
      • Docker
      • Redis
      • AWS, Azure
      • Device
    • Etc
      • CleanCoding
    • Git,Github

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • controllerTest
  • 자바프로그램
  • 참조변수
  • 컨트롤러
  • 참조타입
  • 404
  • scanner #next() #nextLine()
  • 자바메모리구조
  • 자바프로그래밍
  • 자바
  • null
  • JVM메모리구조
  • 스프링

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
simDev1234
Language/Java

[자바_복습] 제어문 활용_최대값/키보드 버퍼 문자 읽기/사칙연산/제곱과 팩토리

[자바_복습] 제어문 활용_최대값/키보드 버퍼 문자 읽기/사칙연산/제곱과 팩토리
Language/Java

[자바_복습] 제어문 활용_최대값/키보드 버퍼 문자 읽기/사칙연산/제곱과 팩토리

2022. 3. 12. 16:38

1. 최대값을 구하기

 

[1] 세 개의 양수 중 최대값 구하기

package practice2_Q;

import java.util.Scanner;

public class Q1 {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		
		int[] arr = new int[3];
		System.out.print("세 개의 양수를 입력하세요 : ");
		arr[0] = scanner.nextInt();
		arr[1] = scanner.nextInt();
		arr[2] = scanner.nextInt();
		
		int max = 0;
		
		for(int i = 0; i < 3; i++) {
			if(max <= arr[i]) {
				max = arr[i];
			}
		}
		System.out.println("Max : "+max);
		
		scanner.close();
	}

}

>> 결과

세 개의 양수를 입력하세요 : 5 89 21
Max : 89

 

 

2. 입력받은 문자 읽기

 

[1] 사용자가 입력한 문자에서 알파벳 문자, 숫자, 화이트문자, 특수문자 갯수 출력

package practice2_Q;

import java.io.IOException;

public class Q2 {

	public static void main(String[] args) throws IOException{
		int ch = 0;
		int[] cnt = {0, 0, 0, 0}; //알파벳, 숫자, 화이트, 특수문자 순차 입력
		
		System.out.println("문자를 입력하세요(Ctrl+z하면 완료)");
		do
		{
			ch = System.in.read();
			
			if(ch == -1) break;
			
			System.out.printf("%c",ch);
			
			if((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z')) {
				cnt[0]++; //알파벳
			}else if(ch >= '0' && ch <= '9') {
				cnt[1]++; //숫자
			}else if(ch == '\r' || ch == '\n' || ch == ' ' || ch == '\t'){
				cnt[2]++; //화이트문자
			}else {
				cnt[3]++; //기타(특수기호)
			}
		}while(true);
		System.out.println();
		System.out.println("알파벳   : "+cnt[0]);
		System.out.println("숫자     : "+cnt[1]);
		System.out.println("화이트   : "+cnt[2]);
		System.out.println("특수문자 : "+cnt[3]);	

	}

	
}

>> 결과

문자를 입력하세요(Ctrl+z하면 완료)
hey there, wanna hang out? :)
hey there, wanna hang out? :)

알파벳   : 20
숫자     : 0
화이트   : 7
특수문자 : 4

 

[2] 사용자로부터 두 개의 양수와 연산자를 받아 계산하기 

package practice2_Q;

import java.util.Scanner;

public class Q3 {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		
		System.out.print("두 개의 양수와 연산자를 입력하세요 : ");
		int x = scanner.nextInt();
		int y = scanner.nextInt();
		String z = scanner.next();
		int result = 0;
		
		switch(z){
			case "+" : result = x + y; break;
			case "-" : result = x - y; break;
			case "*" : result = x * y; break;
			case "/" : result = x / y; break;
			case "%" : result = x % y; break;
			default  : result = -1;
		}
		System.out.printf("%d %s %d = %d",x,z,y,result);
		
		scanner.close();
	}

}

>> 결과

두 개의 양수와 연산자를 입력하세요 : 2 3 +
2 + 3 = 5

 

[3] 사용자로부터 알파벳 문자를 하나 받아 나라명 출력하기 (if - else문 활용)

package practice2_Q;

import java.io.IOException;

public class Q4 {

	public static void main(String[] args) throws IOException {
		String[] nation = {"America","Bangladesh", "Canada", "Demmark","Ezypt", "France", 
				"Greece","Hungary","Iceland","Jamaica","Korea",
				"Lebanon","Malta","North Korea","Oman","Peru","Qatar","Romania","Singapore",
				"Thailand","Uganda","Vietnam","W로 시작하는 나라는 없습니다.","X로 시작하는 나라는 없습니다.","Yemen","Zambia"};
		String alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
		
		System.out.print("문자 한 개를 입력하세요. >> ");
		int ch = System.in.read();
		
		//소문자 -> 대문자
		if(ch >= 'a' || ch <= 'z') ch -= 32;

		for(int i = 0; i < alpha.length(); i++) {
			if(ch == alpha.charAt(i)) {
				System.out.printf("%c로 시작하는 나라는 : %s",ch,nation[i]);
			}
		}
	}

}

>> 결과

문자 한 개를 입력하세요. >> a
A로 시작하는 나라는 : America

 

3. 사칙연산 결과를 테이블 형식으로 출력 

 

[1] 정상가격과 세일가격(30%) 출력하기 (정상가격 범위 : 20000원~30000원)

package practice2_Q;

public class Q5 {

	public static void main(String[] args) {
		System.out.println("정상가격      세일가격");
		System.out.println("--------------------------");//14
		
		for(int price = 20000; price <= 30000; price+=1000) {
			System.out.printf("%-13d %.0f\n",price,price*0.7);
		}
	}

}

>> 결과

 

정상가격      세일가격
--------------------------
20000         14000
21000         14700
22000         15400
23000         16100
24000         16800
25000         17500
26000         18200
27000         18900
28000         19600
29000         20300
30000         21000

 

[2] 사용자에게 양의 정수 n을 받아, 1부터 n까지 합 구하기 

package practice2_Q;

import java.util.Scanner;

public class Q6 {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		
		System.out.print("양수 n : ");
		int n = scanner.nextInt();
		int sum = 0;
		
		for(int i = 1; i <= n; i++) {
			sum += i;
		}
		System.out.println("sum : "+sum);
		
		scanner.close();
	}

}

>> 결과

양수 n : 5
sum : 15

 

[3] 1부터 10까지 양의 정수 중 짝수의 곱을 구하기

package practice2_Q;

public class Q7 {

	public static void main(String[] args) {
		int n = 10;
		int result = 1;
		
		for(int i = 1; i <= n; i++) {
			if(i % 2 == 0)
				result = result * i;
		}
		System.out.println("result : "+result);
	}

}

>> 결과

result : 3840

 

[4] 원주율을 구하는 공식에 따라 원주율 값 구하기

4/1 - 4/3 + 4/5 - 4/7 + 4/9 .....
package practice2_Q;

public class Q8 {
	public static void main(String[] args) {
		int n = 1;
		int sign = 1;
		double result = 0;
		for(long i = 0; i < 2000000000; i++) {
			result += sign*(4.0/n);
			sign = -sign;
			n += 2;
		}
		System.out.println("PI = "+result);
	}
}

>> 결과

PI = 3.141592658505181

 

4. 제곱과 팩토리얼

 

[1] (제곱) 0~6까지의 제곱과 세제곱을 구하여 테이블 형식으로 출력

package practice2_Q;

public class Q9 {

	public static void main(String[] args) {
		System.out.println("기존      제곱      세제곱");
		System.out.println("-----------------------------");
		
		for(int i = 0; i < 7; i++) {
			System.out.printf("%-10d%-10d%d%n",i,i*i,i*i*i);
		}
	}

}

>> 결과

기존      제곱      세제곱
-----------------------------
0         0         0
1         1         1
2         4         8
3         9         27
4         16        64
5         25        125
6         36        216

 

[2] (팩토리얼) 사용자에게 양의 정수 n을 받아, n! 구하기 (n! = n * (n-1)! // 단, 0!은 1이다)

package practice2_Q;

import java.util.Scanner;

public class Q10 {

	public static void main(String[] args) {
		
		Scanner scanner = new Scanner(System.in);
		
		System.out.print("n값 : ");
		long n = scanner.nextInt();
		long result = 1;
		
		//f(x) = x * f(x-1) 
		//단, x가 0일 때 값은 1이다.
		if(n == 0) {
			result = 1;
		}else {
			for(long i = n; i > 0; i--) {
				result = result * i; 
			}
		}
		System.out.printf("%d! = %d",n,result);

		scanner.close();
	}
	
}

>> 결과

n값 : 3
3! = 6

 

[※ 참고 : 팩토리얼 원리]
- 팩토리얼이란 무엇일까? https://johnleeedu.tistory.com/23
- 팩토리얼을 왜 사용하나?
  https://ko.khanacademy.org/computing/computer-science/algorithms/recursive-algorithms/a/the-factorial-function
- 팩토리얼의 수학 원리 https://www.youtube.com/watch?v=zSUMcsASTTo 

팩토리얼은 고등수학에서 순열과 조합을 배우면서 배우는 것인데, 경우의 수를 구할 때 사용한다.
원리는 다음과 같다.
만약 A,B,C 세 사람이 앉는 순서를 정한다 할 때 경우의 수는 아래처럼 구할 수 있다.

0!이 1인 이유는, 아무것도 없을 때에 "없다"는 것도 하나의 경우에 해당하기 때문

 

[3] 실수의 거듭 제곱 값 구하기 (실수 : r, 정수 : n)

package practice2_Q;

import java.util.Scanner;

public class Q11 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		
		System.out.println("실수, 정수를 하나씩 입력하세요.(ex.5.34 7)");
		double r = scanner.nextDouble();
		int n = scanner.nextInt();
		double result = 1;
		
		for(int i = 0; i < n; i++) {
			result = result * r;
		}
		System.out.printf("%f^%d = %f",r,n,result);
		
		scanner.close();
	}
}

>> 결과

실수, 정수를 하나씩 입력하세요.(ex.5.34 7)
5.231    3
5.231000^3 = 143.137741

'Language > Java' 카테고리의 다른 글

[자바의정석_복습] 객체지향 프로그래밍2 - 상속, 다형성  (0) 2022.03.12
[ 코딩 연습] 클래스와 메서드_올해 띠, 간지, 나이 구하기  (0) 2022.03.12
[자바_복습] 중첩for문 활용_구구단/행렬/별찍기  (0) 2022.03.11
[자바_복습] 제어문 예시 - 조건문과 반복문 각각  (0) 2022.03.08
[자바_복습] 연산자 구체적으로 보기  (0) 2022.03.07
  • 1. 최대값을 구하기
  •  
  • 2. 입력받은 문자 읽기
  • 3. 사칙연산 결과를 테이블 형식으로 출력 
  • 4. 제곱과 팩토리얼
'Language/Java' 카테고리의 다른 글
  • [자바의정석_복습] 객체지향 프로그래밍2 - 상속, 다형성
  • [ 코딩 연습] 클래스와 메서드_올해 띠, 간지, 나이 구하기
  • [자바_복습] 중첩for문 활용_구구단/행렬/별찍기
  • [자바_복습] 제어문 예시 - 조건문과 반복문 각각
simDev1234
simDev1234
TIL용 블로그. * 저작권 이슈가 있는 부분이 있다면 댓글 부탁드립니다.

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.