728x90
문제
x, y값 입력받고 x의 y승 구하기
무한 반복하게 만들기
package loop;

import java.util.Scanner;

public class ForTest05 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int x, y;

		while (true) {
			int mul = 1; // 이게 반복문 안에 있어야지 끝날때마다 초기화가 가능.
			System.out.println("거듭제곱을 구하세요");
			System.out.println("x의 y승을 계산하시오");

			System.out.print("x값 입력 : ");
			x = sc.nextInt();
			System.out.print("y값 입력 : ");
			y = sc.nextInt();

			for (int i = 1; i <= y; i++) {
				mul *= x;
			}
			System.out.println(x + "의 " + y + "승 " + mul);
			System.out.println();
		}

	}
}

System.in.read() 사용하는 방법
read는 숫자가 아닌 문자로 읽기 때문에 
숫자로 입력을 해도 아스키코드로 인식을 한다. 그래서 입력값에 -48을 해줘야지 사용자가 원하는 값을 입력할 수 있다.

package loop;

import java.io.IOException;

//System.in.read(); 사용한 방법
public class ForTest05_2 {
	public static void main(String[] args) throws IOException {

		while (true) {
			System.out.print("x값 입력 : ");
			int x = System.in.read() - 48;// 숫자가 아닌 문자로 읽기 때문에 0의 아스키값을 빼줘야함
			System.in.read(); // 엔터값까지 입력하기 때문에 buffer에 입력값을 지우기 위해 추가
			System.in.read();

			System.out.print("y의 값 입력 : ");
			int y = System.in.read() - '0';
			System.in.read();
			System.in.read();

			int mul = 1;
			for (int i = 1; i <= y; i++) {
				mul *= x;
			}
			System.out.println(x + "의 " + y + " 승은 " + mul);
			System.out.println();
		}
	}

}
728x90

'JAVA' 카테고리의 다른 글

배열 연습문제04  (0) 2020.09.12
배열, 2차원 배열 정리  (0) 2020.09.12
숙제-더하기 연습 프로그램(for, 중첩for, while, bufferedReader,  (0) 2020.09.09
숙제-NumberGame(bufferedReader, while, if )  (0) 2020.09.09
switch 연습02  (0) 2020.09.08
728x90
문제
더하기 연습 프로그램
10~99 사이의 난수를 2개(a, b) 발생하여 합을 구하는 프로그램
문제수는 총 5문제를 제공한다 - for
1문제당 점수 20점씩 계산

[실행결과]
[1] 25 + 36 = 45
틀렸다

[2] 78 + 10 = 88
딩동뎅
...

[5] 12 + 25 = 37
딩동뎅

당신의 총 x문제를 맞추어서 xx점 입니다
package loop;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class AddGame {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int user, com1, com2, sum, count = 0, result = 0;

		for (;;) {//for1
			for (int i = 1; i <= 5; i++) {//for2
				com1 = (int) (Math.random() * 89) + 10;
				com2 = (int) (Math.random() * 89) + 10;

				System.out.print("[" + i + "] " + com1 + " + " + com2 + " = ");
				user = Integer.parseInt(br.readLine());
				result = com1 + com2;

				if (result == user) {
					System.out.println("딩동댕");
					count++;
				} else {
					System.out.println("틀렸다. 답 : " + result);
				}
			} // for2
			sum = count * 20;
			System.out.println("당신은 총" + count + "문제를 맞춰서 " + sum + "점 입니다.");
			
			String user1;
			while (true) {//while
				System.out.println("continue Y/N : ");
				user1 = br.readLine();

				if (user1.equals("n") || user1.equals("N") || user1.equals("y") || user1.equals("Y"))
					break; // 저 4개의 문자를 받으면 while문을 break해서 나가기 

			} // while
			//나갔는데 아래처럼 n이 아니면 break를 하지 안고 다시 for2로 올라감
			if (user1.equals("n") || user1.equals("N"))
				
			break;	
		}//for1
		System.out.println("프로그램 종료");
	}

}

 난수 2개를 생성하고 값을 저장해야하니까 com1, com2를 만든다.
전체를 무한반복하는 for문을 만들고 그안에
for문을 사용해 5번 반복시키고 
그안에 if문으로 정답, 오답을 출력하는 코드를 만든다.
for문 밖에다가 continue를 물어보는 코드를 만들고
y를 입력시 다시 for2로 올라가게 만들고
n을 입력시 끝내게 만든다.

break는 멈추기보다는 { }안을 벗어나는 의미

for1을 while(true)로 바꿔도 된다.

728x90

'JAVA' 카테고리의 다른 글

배열, 2차원 배열 정리  (0) 2020.09.12
for 연습05  (0) 2020.09.09
숙제-NumberGame(bufferedReader, while, if )  (0) 2020.09.09
switch 연습02  (0) 2020.09.08
if문 연습04 (가위, 바위, 보 게임)  (0) 2020.09.08
728x90

1. 알파벳A~Z 일렬로 출력하기

package loop;

public class ForTest {
	public static void main(String[] args) {
		int i;
        
		for(i='A'; i<='Z'; i++) {
			System.out.print((char)i+" ");
		}
	}

}
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 

2. 구구단  system.read를 이용해서 원하는 단 구하기

package loop;

import java.io.IOException;

public class ForTest02 {
	public static void main(String[] args) throws IOException {
		 
		System.out.print("원하는 단을 입력 : ");
		int dan = System.in.read()-48;
		for (int i=1; i<10; i++) {
			System.out.println(dan+"*"+i+"="+dan*i);
			
		}
	}

}

system.read를 이용하면 '한' 글자만 입력, 인식이 가능하고 
숫자가 아니라 문자로 인식해 아스키 코드로 인식한다.
그래서 0의 아스키코드 값인 48을 빼준다.


3. 난수 대문자(A~Z)를 100개 출력하세요

package loop;

public class ForTest03 {
	public static void main(String[] args) {
		
		for(int i=1;i<=100;i++) {
			System.out.println((char)((Math.random()*26)+65)+" "+i);
		}
		
	}

}

다른방법

package loop;

public class ForTest03 {
	public static void main(String[] args) {
		int num;
		
		for(int i=1;i<=100;i++) {
			num = (int)(Math.random()*26)+65;
			//System.out.printf("%2c",(char)num); //앞으로 정렬
            System.out.printf("%-2c",(char)num); //뒤로정렬
		}
		
	}

}
T K N S F ~ J C L F W V M W (총100개)

4. 난수 알파벳을 10x10으로 출력하기

package loop;

public class ForTest03 {
	public static void main(String[] args) {
		int num;

		for (int i = 1; i <= 100; i++) {
			num = (int) (Math.random() * 26) + 65;
			System.out.printf("%-2c", (char) num);
			
			if(i%10==0)System.out.println();
		}
        }
   }

for 중첩으로 풀기(printf사용)

package loop;

public class ForTest03 {
	public static void main(String[] args) {
		int num;

		for (int i = 1; i <= 10; i++) {
			for (int j = 1; j <= 10; j++) {
				num = (int) (Math.random() * 26) + 65;
				System.out.printf("%-2c", (char) num);
			}
			System.out.println();
		}

	}

}
T A Y N R Q B Q N R 
F Q P X C Y D P H K 
J J K M P J R H D F 
W M J X J R R N S G 
O F J X Q J H L F S 
R Z U B L O G H L B 
M H N J B S T D N Y 
G S H B G X F W D F 
M Y F S R X F I H R 
I M B R N N D D Y W 

5. 알파벳 10x10으로 출력하고 A가 몇개인지 구하기

package loop;

public class ForTest04 {
	public static void main(String[] args) {
		int num, count=0;
		
		for (int i = 1; i <= 100; i++) {
			num = (int) (Math.random() * 26) + 65;
			System.out.printf("%-2c", (char) num);
			if('A'==num) {
				count++;
			}
			
			if(i%10==0)System.out.println();
		}
		System.out.println("A의 개수 = "+count);
	}

}
T A Y N R Q B Q N R 
F Q P X C Y D P H K 
J J K M P J R H D F 
W M J X J R R N S G 
O F J X Q J H L F S 
R Z U B L O G H L B 
M H N J B S T D N Y 
G S H B G X F W D F 
M Y F S R X F I H R 
I M B R N N D D Y W 
A의 개수 = 1
728x90

'JAVA' 카테고리의 다른 글

switch 연습02  (0) 2020.09.08
if문 연습04 (가위, 바위, 보 게임)  (0) 2020.09.08
if, switch 연습(성적구하기)  (0) 2020.09.08
if문 연습03  (0) 2020.09.08
컴퓨터와 가위 바위 보  (0) 2020.09.08

+ Recent posts