728x90

일반적인 배열

방법1

package day0910;

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

int Array01[] = new int[3];
		Array01[0] = 10;
		Array01[1] = 56;
		Array01[2] = 89;
		System.out.println(Array01[0]);
		System.out.println(Array01[1]);
		System.out.println(Array01[2]);

}
}
10
56
89

방법2

package day0910;

public class Array {
	public static void main(String[] args) {
    
		int[] Array02 = {11, 55, 88};
		System.out.println(Array02[0]);
		System.out.println(Array02[1]);
		System.out.println(Array02[2]);


	}
}
11
55
88

방법3 (제일 많이 쓰이는 것 같음)

package day0910;

public class Array {
	public static void main(String[] args) {
		
		int[] Array03 = new int[3];
		Array03[0] = 10;
		Array03[1] = 56;
		Array03[2] = 89;
		System.out.println(Array03[0]);
		System.out.println(Array03[1]);
		System.out.println(Array03[2]);

	}
}
10
56
89

방법4

package day0910;

public class Array {
	public static void main(String[] args) {
		
		int[] Array04;
        Array04 = new int[] {10, 20, 30};
        System.out.println(Array04[0]);
        System.out.println(Array04[1]);
        System.out.println(Array04[2]);


	}
}
10
20
30

방법5

package day0910;

public class Array {
	public static void main(String[] args) {
		
		int[] Array05 = new int[5];
        for(int i=0; i<Array05.length; i++){
            Array05[i] += i+10;
            }
        System.out.println(Array05[0]);
        System.out.println(Array05[1]);
        System.out.println(Array05[2]);  
        System.out.println(Array05[3]);
        System.out.println(Array05[4]);



	}
}
10
11
12
13
14


입력값으로 배열 넣는법

방법 1

 

package day0910;

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

public class Array {
	public static void main(String[] args) throws IOException{
				BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
				
				int[]array01 = new int[5];
				
				//그럼 배열에 각 요소에 값을 입력
				//0~4번까지 차례대로 입력
				System.out.print("0번 인덱스에 입력할 값: ");
				array01[0] =Integer.parseInt(br.readLine());
				
				System.out.print("1번 인덱스에 입력할 값: ");
				array01[1] =Integer.parseInt(br.readLine());
				
				System.out.print("2번 인덱스에 입력할 값: ");
				array01[2] =Integer.parseInt(br.readLine());
				
				System.out.print("3번 인덱스에 입력할 값: ");
				array01[3] =Integer.parseInt(br.readLine());
				
				System.out.print("4번 인덱스에 입력할 값: ");
				array01[4] =Integer.parseInt(br.readLine());
				
				System.out.println();
				System.out.println("배열안의 값");
				System.out.println("array01[0] : "+array01[0]);
				System.out.println("array01[1] : "+array01[1]);
				System.out.println("array01[2] : "+array01[2]);
				System.out.println("array01[3] : "+array01[3]);
				System.out.println("array01[4] : "+array01[4]);
	}

}
0번 인덱스에 입력할 값: 10
1번 인덱스에 입력할 값: 20
2번 인덱스에 입력할 값: 30
3번 인덱스에 입력할 값: 40
4번 인덱스에 입력할 값: 50

배열안의 값
array01[0] : 10
array01[1] : 20
array01[2] : 30
array01[3] : 40
array01[4] : 50

방법2 - 하나씩 입력하는데 for문을 이용

package day0910;

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

public class Array {
	public static void main(String[] args) throws IOException {
		// int배열을 하나 만들어보자
		int[] array02 = new int[5];
		// 크기가 5인 배열 생성

		// 배열의 크기를 확인할 떄에는
		System.out.println("배열의 크기: " + array02.length);

		// 배열의 전체를 한번씩 찍기
		// 배열의 각 위치는 index를 통해서 접근하기 때문에 for문을 이용
		for (int i = 0; i < array02.length; i++) {
			System.out.println(i + "번째의 값: " + array02[i]);
		}
		System.out.println();

		// 기본형 데이터가 배열의 경우
		// 모든값이 0으로 초기화된다.

		// for문을 통해서 각 위치에 값을 입력해주자
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		for (int i = 0; i < array02.length; i++) {
			System.out.print(i + "번째의 값: ");
			array02[i] = Integer.parseInt(br.readLine());
		}

		// 출력
		System.out.println();
		for (int i = 0; i < array02.length; i++) {
			System.out.println(i + "번째의 값: " + array02[i]);
		}

	}

}
배열의 크기: 5
0번째의 값: 0
1번째의 값: 0
2번째의 값: 0
3번째의 값: 0
4번째의 값: 0

0번째의 값: 10
1번째의 값: 20
2번째의 값: 30
3번째의 값: 40
4번째의 값: 50

0번째의 값: 10
1번째의 값: 20
2번째의 값: 30
3번째의 값: 40
4번째의 값: 50

방법3 - 1~50까지의 랜덤값을 발생해서 넣어주기

package day0910;

import java.util.Random;

public class Array {
	public static void main(String[] args) {
		int[] array03 = new int[5];
		// 난수를 저장할 인트 배열을 만들기
		Random random = new Random();
		// 랜덤으로 상수를 만드는 메소드

		// for문을 통해 랜덤 숫자를 배열에 차례대로 넣어기
		for (int i = 0; i < array03.length; i++) {
			// 랜덤 변수의 nextInt() 메소드는 괄호안의 최대값을 지정해 줄 수 있다.
		
	// 하지만 최대값을 넣어주면 0~(최대값-1)까지의 숫자가 나오기 때문에
			// 만약 1부터 최대값까지를 뽑아내고 싶으면 무조건 결과값에 1을 더해주면 된다.
			array03[i] = random.nextInt(50) + 1;
		}

		System.out.println("출력");
		for (int i = 0; i < array03.length; i++) {
			System.out.print(array03[i] + " ");
		}
		
	}
}
출력
8 25 13 22 36 

랜덤으로 생성되는거라서 할때마다 다름



2차원 배열

방법1 - 하나씩 지정해서 값 넣어주기

package day0910;


public class Array {
	public static void main(String[] args) {
		int[][] array = new int[2][3];
		
		array[0][0] = 01;
		array[0][1] = 02;
		array[0][2] = 03;
		array[1][0] = 10;
		array[1][1] = 11;
		array[1][2] = 12;
		
		for(int i=0; i<array.length; i++) {//[2][3]중에 [2]를 구분
			for(int j=0; j<array[i].length; j++) {
				//이건 이제[0][1]구분해서 [0][3], [1][3]의 내용을 보는거
				System.out.print(array[i][j]+" ");
			}
			System.out.println();
		}
	}
}
1 2 3 
10 11 12 

방법2 - 입력값 받아서 하나씩 값 넣어주기

package day0910;

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

public class Array {
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		//2차원배열생성
		int[][] array = new int[2][3];
		for (int i=0; i<array.length; i++) {//array[0][0], array[1][0]구분
			for(int j= 0;j<array[i].length; j++) {
				System.out.print("배열안에 값 입력  ["+i+"]["+j+"] : ");
				array[i][j] = Integer.parseInt(br.readLine()); 
			}
		}
		
		for(int i=0; i<array.length; i++) {//[2][3]중에 [2]를 구분
			for(int j=0; j<array[i].length; j++) {
				//이건 이제[0][1]구분해서 [0][3], [1][3]의 내용을 보는거
				System.out.print(array[i][j]+ " ");
			}
			System.out.println();
		}
	}
}
배열안에 값 입력  [0][0] : 10
배열안에 값 입력  [0][1] : 20
배열안에 값 입력  [0][2] : 30
배열안에 값 입력  [1][0] : 11
배열안에 값 입력  [1][1] : 12
배열안에 값 입력  [1][2] : 13
10 20 30 
11 12 13 
728x90

'JAVA' 카테고리의 다른 글

[메소드]toString()메소드  (0) 2020.09.16
배열 연습문제04  (0) 2020.09.12
for 연습05  (0) 2020.09.09
숙제-더하기 연습 프로그램(for, 중첩for, while, bufferedReader,  (0) 2020.09.09
숙제-NumberGame(bufferedReader, while, if )  (0) 2020.09.09
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~100사이의 난수를 발생하여 맞추는 게임

[실행결과]
숫자 입력 : 50
50보다 큽니다

숫자 입력 : 90
90보다 작습니다

...

숫자 입력 : 87
딩동뎅 xx번만에 맞추셨습니다

continue(Y/N) : n
프로그램을 종료합니다

내가한 방법

처음에는 사진처럼 continmue를 만들때 반복문을 전체를 싸지 않고 else안에 생성해서 오류

두번째는 아래 사진처럼 30번줄에 break를 하지않아 반복문을 빠져나오지못해서 33번 문장으로 갈수 없어서 Unreachable code  오류가 나왔다.

그래서 고친 코드는 아래처럼

package loop;

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

public class NumberGame {
	public static void main(String[] args) throws IOException {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int num, user, count = 0;
		String choice;

		System.out.println("숫자맞추기");
		num = (int) (Math.random() * 100) + 1;// 난수생성
		for (;;) {
			while (true) {//
				count++;
				System.out.print("숫자입력 : ");
				user = Integer.parseInt(br.readLine());

				if (user > num) {
					System.out.println(user + "보다 작습니다.");
					System.out.println();
				} else if (user < num) {
					System.out.println(user + "보다 큽니다");
					System.out.println();
				} else {
					System.out.println("딩동댕 " + count + "번만에 맞추셨습니다.");
					break;
				}
			} // while
			System.out.print("continue(Y/N) : ");
			choice = br.readLine();
			if (choice.equals("n")||choice.equals("N"))
				break;
		} // for
		System.out.println("프로그램 종료");
	}
}

선생님 방법

나는 "딩동댕 맞췄습니다"를 while안에 넣었는데 선생님은 while문 밖에다 만들었다.

package loop;

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

public class NumberGame02 {
	public static void main(String[] args) throws IOException {
		int user, num, count=0;
		String choice, yn;

		
		for(;;) {//무한반복
		 num = (int) (Math.random() * 100) + 1;// 난수생성
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		System.out.println("숫자맞추기");

		while (true) {//
			System.out.print("숫자입력 : ");
			user = Integer.parseInt(br.readLine());
			count++;

			if (user > num) {
				System.out.println(user + "보다 작습니다.");
			} else if (user < num) {
				System.out.println(user + "보다 큽니다");
			} else {
				break;
			}
		}//while문 끝
		
		System.out.println("딩동댕 " + count + "만에 맞추셨습니다.");
		System.out.println("=========");
		
		System.out.println("continue Y/N : ");
		yn = br.readLine();
		if(yn.equals("n")||yn.equals("N")) {
			break; //for문을 나가는거
		}
	}//for
		System.out.println("프로그램 종료");
	}
}

 


a여기에 한술 더해서 continue에 y나 n이 아닌 다른 코드를 넣으면 계속 물어보는 코드를 추가했다.

package loop;

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

public class NumberTest02_1 {
	public static void main(String[] args) throws IOException {
		int user, num, count = 0;
		String choice, yn;

		for (;;) {// 무한반복
			num = (int) (Math.random() * 100) + 1;// 난수생성
			BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

			System.out.println("숫자맞추기");

			while (true) {//
				System.out.print("숫자입력 : ");
				user = Integer.parseInt(br.readLine());
				count++;

				if (user > num) {
					System.out.println(user + "보다 작습니다.");
				} else if (user < num) {
					System.out.println(user + "보다 큽니다");
				} else {
					break;
				}
			} // while문 끝

			System.out.println("딩동댕 " + count + "만에 맞추셨습니다.");
			System.out.println("=========");

			while (true) {
				System.out.println("continue Y/N : ");
				yn = br.readLine();
				
				if (yn.equals("n") || yn.equals("N") || yn.equals("y") || yn.equals("Y"))
					break; // for문을 나가는거
				
			} // while
			if (yn.equals("n") || yn.equals("N"))
			break;

		} // for
		System.out.println("프로그램 종료");
	}

}

 

728x90

'JAVA' 카테고리의 다른 글

for 연습05  (0) 2020.09.09
숙제-더하기 연습 프로그램(for, 중첩for, while, bufferedReader,  (0) 2020.09.09
switch 연습02  (0) 2020.09.08
if문 연습04 (가위, 바위, 보 게임)  (0) 2020.09.08
for문 연습03  (0) 2020.09.08
728x90
 월급 계산 프로그램
이름, 직급, 기본급, 수당을 입력하여 세금과 월급을 계산하시오
세율은 급여가 4,000,000 만원 이상이면 3% 아니면 2%로 한다

만약 이 문제를 다 풀었다면
세금은 calcTax()
월급은 calcSalary()를 이용해서 계산하시오

급여 = 기본급 + 수당
세금 = 급여 * 세율
월급 = 급여 - 세금

[실행결과]
이름 입력 : 홍길동
직급 입력 : 부장
기본급 입력 : 4500000
수당 입력 : 200000

   *** 홍길동 월급 명세서 ***
직급 : 부장
기본급      수당      급여   세율   세금   월급
4500000      200000     4700000   3%   xxxxx   xxxxxxx
package method;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
//기본급(basePay), 수당(allowance), 급여(wage), 세율(taxRate), 세금(tax), 월급(salary)

public class Salary {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		String name, grade; 
		int wage=0 ,salary=0, basePay=0, allowance=0, tax=0; 
		double taxRate =0;
		
		System.out.print("이름 입력 : ");
		name = br.readLine();
		System.out.print("직급 입력 : ");
		grade = br.readLine();
		System.out.print("기본급 입력 : ");
		basePay = Integer.parseInt(br.readLine());
		System.out.print("수당 입력 : ");
		allowance = Integer.parseInt(br.readLine());
		
		wage = basePay + allowance;
		taxRate = wage >= 4000000 ? 0.03 : 0.02;
		tax = (int) (wage*taxRate);
		salary = wage - tax;
		
		
		System.out.println("\t*** "+name+"월급 명세서 ***");
		System.out.println("직급 : "+grade);
		System.out.println("기본급\t수당\t급여\t세율\t세금\t월급");
		System.out.println(basePay+"\t"
						+allowance+"\t"
						+wage+"\t"
						+(int)(taxRate*100)+"%\t"
						+tax+"\t"
						+salary);
		
	}

}

메소드를 이용한 방법

package method;

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

public class Salary02 {

	public int calcTax(int a, double b) {
		return (int) (a * b);
	}

	public int calcSalary(int a, int b) {
		return a - b;
	}

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		Salary02 salary02 = new Salary02();

		String name, grade;
		int wage = 0, salary = 0, basePay = 0, allowance = 0, tax = 0;
		double taxRate = 0;

		System.out.print("이름 입력 : ");
		name = br.readLine();
		System.out.print("직급 입력 : ");
		grade = br.readLine();
		System.out.print("기본급 입력 : ");
		basePay = Integer.parseInt(br.readLine());
		System.out.print("수당 입력 : ");
		allowance = Integer.parseInt(br.readLine());

		wage = basePay + allowance;
		taxRate = wage >= 4000000 ? 0.03 : 0.02;
		tax = salary02.calcTax(wage, taxRate);
		salary = salary02.calcSalary(wage, tax);

		System.out.println("\t*** " + name + "월급 명세서 ***");
		System.out.println("직급 : " + grade);
		System.out.println("기본급\t수당\t급여\t세율\t세금\t월급");
		System.out.println(basePay + "\t" 
						+ allowance + "\t" 
						+ wage + "\t" 
						+ String.format("%.0f", taxRate * 100) + "%\t" 	
						+ tax + "\t" 
						+ salary);

	}
}
728x90
728x90

사칙연산하기

package switch_Ex;

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

public class SwitchTeat02_1 {
	public static void main(String[] args) throws IOException{
		DecimalFormat df = new DecimalFormat("#.###");
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int a, b;
		String op;
		
		System.out.println("2개의 정수형 숫자와 연산자(+,-,*,/)를 입력하여 계산하시오");
		System.out.print("a 입력 : ");
		a = Integer.parseInt(br.readLine());
		System.out.print("b 입력 : ");
		b = Integer.parseInt(br.readLine());
		System.out.print("연산자(+,-,*,/) 입력 : ");
		op = br.readLine();
		
		double result =0;
		switch(op) {
		case "+" : result = a + b; break;
		case "-" : result = a - b; break;
		case "*" : result = a * b; break;
		case "/" : result = (double)a / b; break;
		default : System.out.println("연산자 error");
		  		  System.exit(0);//문장을 그냥 끝내는 코드
		 
		}
		System.out.println(a+op+b+" = "+df.format(result));
		
	}

}
2개의 정수형 숫자와 연산자(+,-,*,/)를 입력하여 계산하시오
a 입력 : 5
b 입력 : 6
연산자(+,-,*,/) 입력 : +
5+6 = 11

다른방법

package switch_Ex;

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

public class SwitchTest02 {
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int a, b, result;
		String op;
		
		System.out.println("2개의 정수형 숫자와 연산자(+,-,*,/)를 입력하여 계산하시오");
		System.out.print("a 입력 : ");
		a = Integer.parseInt(br.readLine());
		System.out.print("b 입력 : ");
		b = Integer.parseInt(br.readLine());
		System.out.print("연산자(+,-,*,/) 입력 : ");
		op = br.readLine();
		
		
		switch(op) {
		case "+" : System.out.println(a+" + "+b+" = "+(a+b));
					break;
		case "-" : System.out.println(a+" - "+b+" = "+(a-b));
					break;
		case "*" : System.out.println(a+" * "+b+" = "+(a*b));
					break;
		case "/" : System.out.println(a+" / "+b+" = "+String.format("%.3f", ((double)a/b)));
					break;
		default : System.out.println("연산자 error");
		}
		
	}

}

 

728x90
728x90

가위, 바위, 보 게임 만들기

문제

 가위(1), 바위(2), 보(3) 게임

[실행결과]
가위(1),바위(2),보(3) 중 번호 입력 : 3 (user)
컴퓨터 : 바위   나 : 보자기
You Win!!

가위(1),바위(2),보(3) 중 번호 입력 : 3 (user)
컴퓨터 : 가위   나 : 보자기
You Lose!!

가위(1),바위(2),보(3) 중 번호 입력 : 1 (user)
컴퓨터 : 가위   나 : 가위
You Draw!!
package if_Ex;

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

// a~b사이의 난수발생 => (int)(Math.random()*(b-a)+a);
public class RPSGame {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int com, user;
		String userRPS = null, comRPS = null;

		System.out.print("가위(1), 바위(2), 보(3) 게임중\n" 
						+ "번호입력 : ");

		user = Integer.parseInt(br.readLine()); //user값 입력
		com = (int) (Math.random() * 3) + 1; // 1~3난수발생
		
//com의 난수(int)1~3을 차례대로  comRPS(String)에 가위,바위,보 저장하기
		if (com == 1)  	   comRPS = "가위";
		else if (com == 2) comRPS = "바위";
		else if (com == 3) comRPS = "보";		
		
//user의 입력값 (int)1~3을 차례대로 userRPS(String)에 가위바위보 저장하기
		if (user == 1) 		userRPS = "가위";
		else if (user == 2) userRPS = "바위";
		else if (user == 3) userRPS = "보";
		
		System.out.println("[실행결과]");
		System.out.println("컴퓨터 : " + comRPS + ",  나 : " + userRPS);

		if (com == 1) {//com이 1(가위)일때
			if (user == 2) {
				System.out.println("You Win!!");
			} else if (user == 1) {
				System.out.println("You Draw!!");
			} else {
				System.out.println("You Lose!!");
			}
		} else if (com == 2) {//com이 2(바위)일때
			if (user == 3) {
				System.out.println("You Win!!");
			} else if (user == 2) {
				System.out.println("You Draw!!");
			} else {
				System.out.println("You Lose!!");
			}
		} else { //com이 3(보)일때
			if (user == 1) {
				System.out.println("You Win!!");
			} else if (user == 3) {
				System.out.println("You Draw!!");
			} else {
				System.out.println("You Lose!!");
			}
		}
	}
}

2번째 방법

package if_Ex;

import java.io.IOException;

public class RPSGame02 {
	public static void main(String[] args) throws IOException {
		
		int com, user;
		
		com = (int)(Math.random()*3)+1; //1~3난수 발생
		
		System.out.println("가위(1), 바위(2), 보(3) 게임중+ 번호입력 : ");
		user = System.in.read()-'0';
		//user = System.in.read()-48;//read는 문자를 입력받는것
		//0을 문자로하면 48의 값을 가지기 떄문에 -를 해줘야 1,2,3을 문자로 받아도 값이 나온다.
		
		if(com==1) {
			if(user==1) {
				System.out.println("컴퓨터 : 가위 \t 사용자 : 가위");
				System.out.println("Deaw!!");
			}else if(user==2) {
				System.out.println("컴퓨터 : 가위 \t 사용자 : 바위");
				System.out.println("Win!!");
			}else if(user==3) {
				System.out.println("컴퓨터 : 가위 \t 사용자 : 보");
				System.out.println("Lose!!");
			}
		}else if(com==2) {
			if(user==1) {
				System.out.println("컴퓨터 : 바위 \t 사용자 : 가위");
				System.out.println("Lose!!");
			}else if(user==2) {
				System.out.println("컴퓨터 : 바위 \t 사용자 : 바위");
				System.out.println("Draw!!");
			}else if(user==3) {
				System.out.println("컴퓨터 : 바위 \t 사용자 : 보");
				System.out.println("Win!!");
			}
		}else if(com==3) {
			if(user==1) {
				System.out.println("컴퓨터 : 보 \t 사용자 : 가위");
				System.out.println("Win!!");
			}else if(user==2) {
				System.out.println("컴퓨터 : 보 \t 사용자 : 바위");
				System.out.println("Lose!!");
			}else if(user==3) {
				System.out.println("컴퓨터 : 보 \t 사용자 : 보");
				System.out.println("Draw!!");
			}
		}
	}

}

3번째 방법 (첫번째랑 방법이랑 입력하는 법이 다름)

package if_Ex;

import java.util.Scanner;

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

		int com, user;
		String userRPS = null, comRPS = null;

		System.out.print("가위(1), 바위(2), 보(3) 게임중\n" 
						+ "번호입력 : ");

		user = sc.nextInt(); //user값 입력
		com = (int) (Math.random() * 3) + 1; // 1~3난수발생
		
//com의 난수(int)1~3을 차례대로  comRPS(String)에 가위,바위,보 저장하기
		if (com == 1)  	   comRPS = "가위";
		else if (com == 2) comRPS = "바위";
		else if (com == 3) comRPS = "보";		
		
//user의 입력값 (int)1~3을 차례대로 userRPS(String)에 가위바위보 저장하기
		if (user == 1) 		userRPS = "가위";
		else if (user == 2) userRPS = "바위";
		else if (user == 3) userRPS = "보";
		
		System.out.println("[실행결과]");
		System.out.println("컴퓨터 : " + comRPS + ",  나 : " + userRPS);

		if (com == 1) {//com이 1(가위)일때
			if (user == 2) {
				System.out.println("You Win!!");
			} else if (user == 1) {
				System.out.println("You Draw!!");
			} else {
				System.out.println("You Lose!!");
			}
		} else if (com == 2) {//com이 2(바위)일때
			if (user == 3) {
				System.out.println("You Win!!");
			} else if (user == 2) {
				System.out.println("You Draw!!");
			} else {
				System.out.println("You Lose!!");
			}
		} else { //com이 3(보)일때
			if (user == 1) {
				System.out.println("You Win!!");
			} else if (user == 3) {
				System.out.println("You Draw!!");
			} else {
				System.out.println("You Lose!!");
			}
		}
	}


}

728x90

'JAVA' 카테고리의 다른 글

숙제-NumberGame(bufferedReader, while, if )  (0) 2020.09.09
switch 연습02  (0) 2020.09.08
for문 연습03  (0) 2020.09.08
if, switch 연습(성적구하기)  (0) 2020.09.08
if문 연습03  (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