* 업다운 게임

숫자 1~100까지의 하나의 랜덤숫자를 맞춰라

5회안에 맞혀야 성공

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import java.util.Scanner;
 
public class Ex05 {
 
    double ran = Math.random();        //random함수
 
    int com = (int)(100*ran+1);        //1-100의 숫자 com 에 저장, +n 의 n은 시작숫자
 
    public static void main(String[] args)  throws Exception{
        Ex05 me = new Ex05();
 
        System.out.println("---------GAME START---------");
 
        me.game();        //game()호출
 
        System.out.println();
        System.out.println("----------GAME END----------");
 
    }//main end
 
    void game(){
 
        Scanner sc = new Scanner(System.in);
        int number;
 
        //System.out.println(com);        //랜덤숫자 정답
 
        for(int i=0;i<5;i++){
 
            System.out.print("1-100까지의 숫자 입력 >>> ");
 
            number=sc.nextInt();        //입력
 
            if(number<1 || number>100){            //1-100까지의 숫자가 아니면 다시 입력, count숫자도 -1 감소
                System.out.println("1-100까지의 숫자를 다시 입력하십시오");
                i--;
            }else if(number<com){
                System.out.println(number+"보다 큽니다");
            }else if(number>com){
                System.out.println(number+"보다 작습니다");
            }else{
                System.out.println("성공!!! "+(i+1)+"회 만에 성공하셨습니다!");    //i=0부터 시작이라 +1
                break;
            }
 
            System.out.println();
 
            if(i==4){
                System.out.println("실패..."+com+"이였습니다");
            }
        }//for end
    }//game end
}//class end
cs

결과


'* Programming > JAVA' 카테고리의 다른 글

DAY12 배열  (0) 2016.07.19
DAY11 class 정리/상수화  (0) 2016.07.18
DAY10 Class/생성자  (0) 2016.07.18
DAY9 멤버필드  (0) 2016.07.15
Apache Ant  (0) 2016.07.13

7일차 강의 정리


Q1. 학생 성적관리 프로그램(조건문 복습)

소스

//국어 80, 영어 75, 수학 90

//합계와 평균을 구하시오

//학점 -> 평균>=90 : A학점, >=80 : B학점, >=70 : C학점, >=60 : D학점, 나머지 F학점(과락) 재시험 응시하세요

int kor = Integer.parseInt(args[0]);

int eng = Integer.parseInt(args[1]);

int math = Integer.parseInt(args[2]);

int sum = kor+eng+math;

double avg = 100*sum/3/100.0;

char result;

//System.out.println("-------학생 성적 관리 프로그램-------");

System.out.println("국어\t영어\t수학\t합계\t평균");

System.out.println("-------------------------------------");

System.out.println(kor+"\t"+eng+"\t"+math+"\t"+sum+"\t"+avg);

System.out.println("-------------------------------------");


if (avg >= 90) {

result = 'A';

} else if (avg >= 80) {

result = 'B';

} else if (avg >= 70) {

result = 'C';

} else if (avg >= 60) {

result = 'D';

} else {

result = 'F';

System.out.println("과락.. 재시험 응시하세요.");

}        //if 문을 사용했을 경우

switch((int)avg/10){

case 10:

case 9:

result = 'A';

break;

case 8:

result = 'B';

break;

case 7:

result = 'C';

break;

case 6:

result = 'D';

break;

default:

result = 'F';

System.out.println("과락.. 재시험 응시하세요.");

break;

}        //switch 문을 사용했을 경우

System.out.println("학점 : "+result+"학점");

결과

Q2.  2e1+2e2+2e3+2e4+...+2e10=? (반복문 복습)

//2e1+2e2+2e3+2e4+...+2e10=?

//2+(2*2)+(2*2*2)+(2*2*2*2)

int i=2;

int sum=0;

int count=0;

boolean b=true;

for(int j=1;j<11;j++){

System.out.print(i+"e"+j);

if(j<10){

System.out.print("+");

}

}

while(b){

i *= 2;

sum += i;

count++;

if(count>=9){

b = false;

}

}

System.out.println("="+(sum+1));

결과

Q3. A, B, C, .... , Z 출력

소스

char ch = 65;            // 'A' , 'a'는 97

while(ch<91){        // 'Z' 까지

System.out.print(ch);

if(ch<90){

System.out.print(", ");

}

ch++;

}

System.out.println();

결과

Q4. a b c d e

f g h i h

...  z

소스

char ch = 97;

int count = 0;

while(ch<=(int)'z'){

System.out.print(ch+" ");

count++;

if(count%5==0){

System.out.println();

}

ch++;

}

System.out.println();

다른방법

for(int i=0;i<6;i++){

for(int j=1;j<=5;j++){

 

if(j+i*5<=26){

System.out.print((char)((j+i*5)+96)+" ");

}

}

System.out.println();

}

결과

Q5. 트리모양 

   *

  ***

 *****

소스1

int limit=4;

for(int a=1;a<=3;a++){

for(int b=1;b<5;b++){

if(b<limit){

System.out.print(' ');

}else{

System.out.print('*');

}

}

for(int b=1;b<a;b++){

System.out.print('*');

}

limit--;

System.out.println();

}

소스2

int tmp=0;

for(int a=1;a<=3;a++){

for(int b=1;b<=5;b++){

if(b<3-tmp){

System.out.print(' ');

}else if(b>3+tmp){

System.out.print(' ');

}else{

System.out.print('*');

}

}

tmp++;

System.out.println();

}

결과


'* Programming > JAVA' 카테고리의 다른 글

Apache Ant  (0) 2016.07.13
DAY8 클래스 메소드  (0) 2016.07.13
DAY6 random 함수  (0) 2016.07.12
DAY6 문제  (0) 2016.07.12
DAY5 기본 메소드  (0) 2016.07.11

6일차 강의 정리


1.random() 함수

소스

public class Ex01 {

public static void main(String[] args) throws Exception{

double ran = Math.random(); //0 <= random < 1

System.out.print("가위(0),바위(1),보(2) 를 선택하세요 : ");

int i = System.in.read()-48;    //console창에 입력

//System.out.println(i);

//int i = Integer.parseInt(args[0]); //문자열을 정수형으로 변환 //args[]를 이용하여 입력받을 수도 있음

int com = (int)(3*ran+0); //0,1,2 의 숫자만 com 에 저장, +n 의 n은 시작숫자

if(i==0 && com==1){

System.out.println("com :"+com+"\n졌습니다...");

}else if(i==0 && com==2){

System.out.println("com :"+com+"\n이겼습니다!!");

}else if(i==1 && com==2){

System.out.println("com :"+com+"\n졌습니다...");

}else if(i==1 && com==0){

System.out.println("com :"+com+"\n이겼습니다!!");

}else if(i==2 && com==0){

System.out.println("com :"+com+"\n졌습니다...");

}else if(i==2 && com==1){

System.out.println("com :"+com+"\n이겼습니다!!");

}else{

System.out.println("com :"+com+"\n비겼습니다.");

}

}//main end

}//class end

컴퓨터와 가위바위보 하기

Math.random() 은 0에서 1사이의 숫자를 랜덤으로 가져온다

가위(0), 바위(1), 보(2) 를 가져오기위해 

*3 : 3이전 까지의 숫자, 0,1,2만 출력

+n : n은 처음 시작 숫자를 결정

결과


'* Programming > JAVA' 카테고리의 다른 글

DAY8 클래스 메소드  (0) 2016.07.13
DAY 7 문제  (0) 2016.07.12
DAY6 문제  (0) 2016.07.12
DAY5 기본 메소드  (0) 2016.07.11
DAY4 문제  (0) 2016.07.11

5일차 강의 정리


1. 메소드 ( return 값이 없는 경우 )

소스

public class Ex01 {

public static void func1(){

//메소드 start

//메소드: 메소드명(인자){}

System.out.println("메소드1 출력합니다.");

System.out.println("-------------------");

}//func1 end

public static void main(String[] args) {

//main start

String st1="안녕"; //String 변수 선언 및 초기화

func1(); //메소드1 호출

func2(1,2); //메소드2-1 호출

func2(st1,999); //메소드2-2 호출

func2(10,20,30); //메소드2-3 호출

}//main end, 메소드 end


public static void func2(int a,int b){ //메소드 이름 차별화

System.out.println("메소드2-1 출력합니다.");

System.out.println(a+"+"+b+"="+(a+b));

}

public static void func2(String a,int b){ //But 자료형이 다를경우 허용

System.out.println("메소드2-2 출력합니다.");

System.out.println(a+"+"+b+"="+(a+b));

}

public static void func2(int x,int y,int z){         //But 인자의 갯수가 다를경우 허용(->메소드 오버로드)

System.out.println("메소드2-3 출력합니다.");

System.out.println(x+"+"+y+"+"+z+"="+(x+y+z));

}

}//class end

메소드 호출 

main메소드 에서 다른 class 안의 메소드를 호출(func1,func2..)

메소드는 이름을 다르게 써야한다

이름을 같게 쓸경우 ( )안 인자의 자료형이 다르거나 인자의 갯수가 다른경우 허용한다

(단, 인자의 자료형이 아니라 메소드 이름앞의 자료형만 다르게 쓰면 오류처리된다)

이를 메소드 오버로드 라고 한다

결과

2. 메소드 ( return 값이 있는 경우 )

소스

public class Ex02 {

public static void main(String[] args) {

//main start

//메소드를 이용한 계산기 프로그램

int a=5,b=3;

func1(a,b); //덧셈 메소드 호출

func2(a,b); //뺄셈 메소드 호출

int x = func3(a,b); //곱셈 메소드 호출

System.out.println("func3의 수행결과는 "+x);

func4(a,b); //나눗셈 메소드 호출

return; //main이 void인 이유 : return 값이 없기 때문에

}//main end


public static void func1(int a,int b){ //덧셈 메소드

System.out.println(a+"+"+b+"="+(a+b));

return; //void인 경우 생략가능

}

public static void func2(int a,int b){ //뺄셈 메소드

System.out.println(a+"-"+b+"="+(a-b));

}

public static int func3(int a,int b){ //곱셈 메소드(return c의 자료형을 void대신 int로 변경)

int c = a*b;

return c; //c값을 main으로 리턴

}

public static void func4(double a,double b){ //나눗셈 메소드

System.out.println(a+"÷"+b+"="+(a/b));

}

}//class end

return 할 값의 자료형에따라 함수의 자료형을 동일 시 해야한다

현재 예제에서 곱셈 메소드(func3)에서 확인할 수있다

결과

3. args[]를 이용하여 입력 받아 계산하기

소스

public class Ex03 {

/* args 입력을 받아 계산기

* 메소드 사용

* 기능별 (+,-,*,/)

*/

public static void main(String[] args) throws Exception{

//main start

int a = Integer.parseInt(args[0]);       //입력받은 문자열 정수(int)로 변환하며 선언 (첫번째 수)

String b = args[1];                        //연산자는 문자열 그대로 선언(+, -, *, /)

int c = Integer.parseInt(args[2]);       //입력받은 문자열 정수(int)로 변환하며 선언 (두번째 수)

func1(a,b,c); //메소드 호출

}//main end

public static void func1(int a,String b,int c){    //계산할 메소드 func1

int add = a+c;

int sub = a-c;

int mul = a*c;

double div = (double)a/(double)c;

if(b.equals("+")){ //b가 +인 경우

System.out.println(a+"+"+c+"="+add);

}else if(b.equals("-")){

System.out.println(a+"-"+c+"="+sub);

}else if(b.equals("*")){

System.out.println(a+"X"+c+"="+mul);

}else if(b.equals("/")){

System.out.println(a+"÷"+c+"="+div);

}else {

System.out.println("잘못 입력하셨습니다.");

}

/*switch(b){        //switch 문 사용

case "+":

System.out.println(a+b+c+"="+add);

break;

case "-":

System.out.println(a+b+c+"="+sub);

break;

case "*":

System.out.println(a+"X"+c+"="+mul);

break;

case "/":

System.out.println(a+"÷"+c+"="+div);

break;

default:

System.out.println("잘못 입력하셨습니다.");

}*/

}//func1 end

}//class end

계산하는 함수는 if()문 switch()문 두가지 방법을 제시해봤다

10 / 3 입력

띄어쓰기로 구분하여 입력한다

결과


'* Programming > JAVA' 카테고리의 다른 글

DAY6 random 함수  (0) 2016.07.12
DAY6 문제  (0) 2016.07.12
DAY4 문제  (0) 2016.07.11
DAY3 조건문 / 반복문  (0) 2016.07.07
DAY2 변수  (0) 2016.07.06

4일차 강의 정리


Q1.     1 2 3 4 5

   6 7 8 9 10

   11 12 ...20   총합계: ?

소스

int sum1 = 0;

for(int num=1;num<=20;num++){

System.out.print(num+"\t");

if(num%5==0){System.out.println();}

sum1 += num;

}

System.out.println("------------------------------------");

System.out.println("총 합계 : "+sum1);

결과


Q2.    1

          1 2

 1 2 3

 1 2 3 4   총합계: ?  

소스

int sum2=0;

for(int i=1;i<=5;i++){ //세로 방향

for(int j=1;j<i;j++){ //가로 방향

System.out.print(j+"\t");

sum2 += j;

}

System.out.println();

}

System.out.println("------------------------------------");

System.out.println("총 합계 : "+sum2);

결과

Q3.     1

 2 3 

 4 5 6 

 7 8 9 10 총합계: ?

소스

int count=0;

int i=1;

int sum=0;

for(int a=1;a<=10;a++){

System.out.print(a+"\t");

sum += a;

count++;

if(count==i){

System.out.println();

i++;

count=0;

}

}

System.out.println("------------------------------------");

System.out.println("총 합계 : "+sum);

다른소스(합계는 제외)

int i=1;

for(int j=0;j<4;j++){

for(int m=0;m<=j;m++){

System.out.print(i+++"\t");

}

System.out.println();

}

결과

Q4.    *

   * * 

   * * * 

   * * * *

소스

for(int i=1;i<=5;i++){ //세로 방향

for(int j=1;j<i;j++){ //가로 방향

System.out.print("*\t");

}

System.out.println();

}

결과


Q5.    * * * *

 * * *

 * *  

 * 

소스1

for(int j=1;j<=5;j++){ //세로 방향

for(int i=5;i>j;i--){ //가로 방향

System.out.print("*\t");

}

System.out.println();  

}

소스2

int limit =4;

int prn =0;

for(int a=10;a>0;a--){

System.out.print(a); //*을 원할시에 출력값만 변경

prn++;

if(prn==limit){

limit--;

System.out.println();

prn=0;

}

}

소스3

int limit=5;

for(int a=1;a<5;a++){

for(int b=1;b<limit;b++){

System.out.print("*");

}

limit--;

System.out.println();

}

결과

Q6. 1~100까지의 합계

소스

int su=1;

int result=0;

while(su<101){

result += su;

su++;

}

System.out.println("1~100까지의 합 : "+result); //5050

결과

Q7. 1~100까지의 짝수 합계

소스

int su=1;

int result=0;

while(su<101){

if(su%2==0){

result += su;

su++;

}

su++;

}

System.out.println("1~100까지의 짝수의 합 : "+result); //2550

결과

Q8.   * * * *

   * * *

     * *  

       *

소스

for(int j=1;j<=5;j++){ //세로 방향

for(int i=5;i>j;i--){         //가로 방향

System.out.print("*\t");

}

System.out.println();

for(int tmp=0;tmp<j;tmp++){

System.out.print("\t");

}

}

결과


Q9. 1+2+3+4+....+n 이들의 합계가 10이 넘는 최소의 n값

소스

int n=1;

int sum=0;

while(sum<=10){

sum += n;

n++;

}

System.out.println("최소의 n값 : "+(n-1));

결과


'* Programming > JAVA' 카테고리의 다른 글

DAY6 문제  (0) 2016.07.12
DAY5 기본 메소드  (0) 2016.07.11
DAY3 조건문 / 반복문  (0) 2016.07.07
DAY2 변수  (0) 2016.07.06
Day1 JDK설치하기  (0) 2016.07.06

+ Recent posts