홀짝 게임 예제

Programing/Java 2015. 8. 21. 20:31 by kira-master



예제 홀짝 게임 





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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
package exam;
// @author kosta, 2015. 8. 20 , 오후 2:31:41 , ExamGame 
import java.util.Scanner;
/*
홀 / 짝 게임 
사용자가 입력한 숫자(1,2)가 CPU 가 발생시킨 변수가 
일치할 경우 You win , 아니면 You lose 를 출력하고
사용자가 종료를 눌렀을 때 게임 결과와 경품결과를 출력한다.
*/
public class Exam_OddNumber_EvenNumber_Game {
    public static void main(String[] args) {
        
        Scanner sc = new Scanner(System.in);
        int total = 0// 총 실행한 게임수
        int winConut=0// 총 이긴 횟수 
        
        // ========================= 사용자 메뉴 UI ========================== 
        exit:while (true
        {
            System.out.println(" 1. 홀 2. 짝 3. 종료 ");
            int num = Integer.parseInt(sc.nextLine()); // 사용자로부터 입력
            boolean res=false;
            switch(num)
            {
                case 1:
                    System.out.println("홀을 선택했습니다.");  
                    ++total;
                    res=outCome(num);
                    if(res){
                        System.out.println("You win");
                        ++winConut;
                    }else {
                        System.out.println("You lose");
                    }
                    break;
                case 2:
                    System.out.println("짝을 선택했습니다."); 
                    ++total;
                     res =outCome(num);
                     if(res){
                        System.out.println("You win");
                        ++winConut;
                    }else {
                        System.out.println("You lose");
                    }
                    break;
                case 3:
                    displayResult(total,winConut);
                    break exit;
            } // end swich
        } // end while 
    } // end main
    
// ============================= 메소드 선언부  ===============================
    
    /**
     * 총 게임 횟수와 총 이긴횟수를 파라미터로 받아서
     * 게임의 결과를 출력하는 메소드
     * @param total // 총 게임횟수
     * @param winConut // 총 이긴 횟수 
     */
    private static  void displayResult(int total, int winConut){
        // 결과 출력창 
        System.out.println("Total : "+ total);
        System.out.println("WIN SCORE : "+winConut);
        System.out.println("LOSE SCORE :"+(total-winConut));
        System.out.println("승률 :"+(int)(((float)winConut/(float)total)*100)+"%");
        prizeResult(winConut); // => 상품 결과 추가 출력 
    } // end displayResult()
    
    /**
     * 획득한 점수에 따라서 상품에 대한 결과를 출력하는 메소드
     * @param winConut // 총 이긴 횟수 
     * dispaly() 메소드로부터 호출 받아서 
     */
    private static void prizeResult(int winConut)
    {
        if (winConut>=90
        {
            System.out.println("상품 A ");
        }else if (winConut>=80) {
            System.out.println("상품 B ");
        }else if (winConut>=70) {
            System.out.println("상품 C ");
        }else if (winConut<=60){
            System.out.println("상품 X ");
        }
        System.out.println("종료 합니다.");
    } // end prizeResult()
    
    /**
     * 랜덤의 값을 발생시켜 홀수 짝수의 따른 일치여부로 승패 결과를
     * 처리해주는 메소드 
     * 난수 발생 범위 :(1<= Random <11)
     * @param num 사용자가 선택한 홀 / 짝을 파라미터로 받음 
     * @return 사용자의 승패를 결과에 따른 결과를 반환
     */
    private static boolean outCome(int num)
    {
          boolean res=false;
          int cpuNum=(int) ((Math.random()*10+ 1); 
          System.out.println("CPU 난수: "+ cpuNum);
          if(num==1) res=cpuNum%2!=0// 홀수  
          if(num==2)res=cpuNum%2==0// 짝수  
        return res;
    } // end outCome()
    
// end class 
 
cs












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

자바 메모리 구조 2  (0) 2015.08.22
String 객체 특징 (== 연산자 특징)  (0) 2015.08.22
자바 메모리 구조1. 변수의 저장영역  (0) 2015.08.22
1일차 Subnote  (0) 2015.08.17
1. Variable  (0) 2015.08.15

1일차 Subnote

Programing/Java 2015. 8. 17. 13:37 by kira-master

1 . 학습목표

자바 환경 설정 및

NetBeanIDE  설치

자바의 특징,  기본적인 메모리 구조  설명

자바의 기초 문법(변수, main 메소드 , 기본연산자)

2 .  학습내용

  1. 자바 설치

Oracle 홈페이지 - > 자바 최신 버전JDK 설치

C:\Program Files\Java\jdk1.8.0_51\bin

bin 폴더-  자바 명령어 포함됨

-java   자바 파일 실행

-javac  컴파일러

java - version  자바 버전 확인


  1. 자바 환경 설정

시스템 속성 -  환경변수 - 시스템 변수 추가

CALSSPATH - .;

JAVA_HOME - C:\Program Files\Java\jdk1.8.0_51

PATH - %JAVA_HOME%\bin;


  1. 넷빈즈  설치

넷빈즈 홈페이지 - > 넷빈즈 8.02 버전 다운로드

  1. 넷빈즈 설치 설정  - 톰켓7  추가 설치


  1. 자바의  특징

  • 객체 지향적이다.(OOP) - > 코드의 재사용성(재활용)

  • 배우기가 쉽다.

  • 플랫폼에 독립적이다. (JVM)

  • 가비지컬렉터(GC) ->    Heap영역 쓰지않는 객체들을 수집해서 메모리에서 해체

  • 멀티쓰레드 지원 -> 멀티 프로세스 (멀티 캐스팅)

  • 컴파일 언어, 인터 프리터 언어이다.

캡슐화 - > 사용자에게는 구현된 프로그램 내부는 보여주지 않고 사용자는 이를 단순히 이용만 하게 만든다.

컴파일: 개발자가 작성한 프로그래밍 언어를 JVM (가상머신)이 기계어로 번역하는 것을 의미한다.

Javac란 명령어를 의미한다.

Javac -> HelloJava.java => HelloJava.class(기계어)


인터프리터: (기계어/class)를 JVM이 해석하여 수행

java란 명령어를 사용한다.

Java - > class -> 기계어 -> CPU 연산 수행 -> 명령 실행


패키지란 ?

재사용되는 같은 성격을 가진 클래스를 모아둔 폴더.


리팩토링 : 사용한 코드를 다시 재설계하여 최적화 하는것.

레거시 :




  1. 자바 플랫폼의 구성

[HelloJava.java]

JAVA API

JVM 자바가상머신

하드웨어 플랫폼(리눅스, 맥, 윈도우)

자바 플랫폼의 종류 J2EE, J2SE, J2Me, JFX....

  1. 기본적인 메모리 구조 ( JVM )


  클래스 영역 - 사용자가 작성한 클래스가 저장되는 영역

  메서드 영역 - 멤버 메서드가 저장되는 영역

  상수풀[constant pool] - 상수가 저장되는 영역 (static 영역 포함)

자바 스택[Stack] - 메서드 호출, 지역변수가 선언돠 초기화(가벼운 영역)

  힙[Heap]  - 객체가 생성되고 사라지지전까지 재사용되기 위해서 메모리에서 기억하는 영역 (즉, 힙이 생성되고 유지, 소멸되는 영역) -                    주소를  참조한다.

  네이티브 스택[Native Stack] - C 언어와 같은 다른 언어의 자원을 빌어 쓸때 사용하는 공간






  1. 자바의 기초 문법

  • 클래스 식별자 : 대문자로 시작 _ , $ 중간에 사용가능 , 특수문자로 시작 불가

ex ) class Myclass_01

  • 메소드/변수  식별자:  반드시 소문자로 시작해야 한다.

소문자와 대문자로 혼용(예약어를 피하기 위한 방법)

예약어 사용 불가


/**

* JVM - > main() 메소드 모든 프로그램의 시작

*

*/

package ex1; // 패키지

// Class 영역 -

public class Ex1_Test {

 

  // Main Method 영역 - JVM은 java 명령어를 통해서 Main 메소드를 항상 호출함.

  public static void main(String[] args){

      // 모니터로 문자를 출력해주는 println() 메소드를 호출

      System.out.println("jjjjjjjj");

  } // end Main

 

} // end Class

  1. 자료형과 변수의 종류

Variable : 특정 값을 연산, 재 사용의 목적으로 메모리의  한 공간에 기억을 해두고 사용하기 위해서 값을 담아두고 사용하기 위한 특정 공간 - 특정 값을 담아두고 사용하기 위한 특정 공간 이름을 지어준다.

  1. 변수의 선언과 초기화

=============================================================

package ex1;

// 변수와 자료형

// 자료형 : 변수의 타입을 지정

// 문법 ) 자료형 변수명 => 변수를 선언한다.

public class Ex2_Val {

  public static void main(String[] args){

      //  *자료형의 종류

      //      - 기본 자료형 ,  참조자료형

      //  *변수의 종류

      //      - 멤버 변수 (멤버필드)+ 지역변수

     

      // 논리형

      boolean  a = false; // defalut - > false , 1byte

      // 문자형

      char b= 'd'; // defalut - > \u0000 ,1byte

      // 정수형

      byte c = 2; //  defalut - > 0, 2byte

      short d= 3;  // defalut - > 0, 8byte

      int e = 1; // defalut - > 0, 4byte

      long f= 33l; // defalut - > 0, 8byte

      // 실수형

      float g = 3.1f; // defalut - > 0.0, 4byte

      double i= 1; // defalut - > 0.0, 8byte

  } // end Main

} // end class


=============================================================

package ex1;

public class Ex3_Val {

  // main 메소드의 프로그램내에 오직 하나이어야만 한다.

  public static void main(String[] args) {

      // 지역변수 - 메소드나 생성자 즉, Local 변수라고 한다.

      // 지역변수는 반드시 초기화 해야한다.

      boolean b;//  변수 선언

      b = true;

      // ---- 참고 --------------------------------------

      // println() 메소드의 인자값으로 문자열과 변수를 전달할떄

      // "문자열값" + 변수명과 같은 형식으로 값을 전달할수 있다.

      //  그러면 println 은 이 값을 문자열로 취급한다.

      // +: 연산자는 문자열의 연결 연산자로 취급됨

      System.out.println("Boolean 타입의 변수 B 의 값 "+b);

     

      // 문자열  - char

      // char c= "A"; // 문자열 (X)

      char c= 'A'; // 문자열 (X)

      System.out.println("Char 타입의 변수 c 의 값 "+c);

      c = 65+1;

      System.out.println("Char 타입의 변수 c 의 값 "+c ); // B

     

      // 유니코드 -> 자바는 2바이트 기반.

      c='\u0042';

      System.out.println("Char 타입의 변수 c 의 값 "+c ); // B

  } // end main

 

} // end class


=============================================================

package ex1;

public class Ex4_Val {

 

  public static void main(String[] args) {

      // JVM 연산

      byte a = 10;

      byte b = 10;

      // JVM 연산할때 특징

      // 4바이트 이하에서 연산할때 JVM 은 무조건 연산시에

      // int 형으로 자동 형변환한다.

     

     byte c;

     // 큰 자료형에서 작은 자료형으로 값을 전달할떄는

     // demotion(축소변화)이 일어난다고 캐스팅 표기를 해준다(컴파일러가)

     c = (byte) (a+b);

     System.out.println(c);

     // promotion(확대변화) byte - > int

     int num =c;

     System.out.println(num);

     //  연습문제 1) short 자료형도 위와 같이 테스트

     //  연습문제 2) byte, short 와 같은 정수형 자료의 범위를 넘겨서

     //  저장해보고 결과를 주석으로 남겨 봅시다.

    

    

     // 1. 연습문제

     short num1 = 200;

     short num2 = 200;

     short num3 = (short) (num1 + num2); // demotion

      System.out.println(num3);

     int num4 = num3; // promotion

      System.out.println(num3);

     

     // 2. 연습문제

      // byte num5 =  200; // - 56  ->  overflow

     long lb = 1212; // promotion

     long lb2 = 1212L;  // long형으로 대입       

  } // end main

} // end calss






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

자바 메모리 구조 2  (0) 2015.08.22
String 객체 특징 (== 연산자 특징)  (0) 2015.08.22
자바 메모리 구조1. 변수의 저장영역  (0) 2015.08.22
홀짝 게임 예제  (0) 2015.08.21
1. Variable  (0) 2015.08.15

1. Variable

Programing/Java 2015. 8. 15. 16:03 by kira-master


1.  Variable

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

자바 메모리 구조 2  (0) 2015.08.22
String 객체 특징 (== 연산자 특징)  (0) 2015.08.22
자바 메모리 구조1. 변수의 저장영역  (0) 2015.08.22
홀짝 게임 예제  (0) 2015.08.21
1일차 Subnote  (0) 2015.08.17
Nav