반응형

7.5>하나의 학생 정보를 Student 클래스로 표현한다. Student 클래스에는 이름, 학과, 학번, 학점 평균을 나타내는 필드가 있다. 키보드로 학생 정보를 5개 입력 받아  ArrayList<Student>에 저장한 후에 ArrayList<Student>의 모든 학생 정보를 출력하는 프로그램을 작성하라.


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
package SecondHW;
import java.util.*//Arraylist와 스캐너 사용 위한 임포트
class Student{ //Student 클래스, 스트링형 name, department, 정수형 number, double형 score 포함
    String name;
    String department;
    int number;
    double score;
    public Student(String name, String department, int number, Double score){
        this.name=name; //Studnet 클래스의 생성자 인자를 객체의 각 원소에 대입한다.
        this.department=department;
        this.number=number;
        this.score=score;
    }}
public class Roaster {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);  //스캐너 객체
        ArrayList<Student> st = new ArrayList<Student>(); //Student를 원소로 갖는 어레이리스트
        System.out.println("학생 정보를 입력하세요: ");
        for(int i=0;i<5;i++//5번 반복
        {
                System.out.print((i+1)+"이름>>");
                String name=s.nextLine();
                System.out.print((i+1)+"학과>>");
                String department=s.nextLine();
                System.out.print((i+1)+"학번>>");
                int number=s.nextInt();
                System.out.print((i+1)+"학점평균>>");
                double score=s.nextDouble();  //이름, 학과, 학번, 학점평균을 Scanner객체 s를 이용하여 받는다.
                Student tmp = new Student(name,department,number,score); //Student 객체 tmp 생성 
                st.add(tmp); //tmp를 st의 원소로 추가
                s.nextLine(); //버퍼에서 개행문자를 비워주기 위함
        }
        for(int i=0;i<st.size();i++){ //st.size=5이므로 5번 반복
            Student res = st.get(i); //어레이리스트 st에서 i번째 인덱스 원소를 res에 대입
            System.out.println("=============================");
            System.out.println("이름: "+res.name);
            System.out.println("학과: "+res.department);
            System.out.println("학번: "+res.number);
            System.out.println("학점평균: "+res.score);
            System.out.println("=============================");//각 원소 출력
        }}}
 
cs




반응형

'컴퓨터 & 프로그래밍 & 전자공학 > JAVA' 카테고리의 다른 글

제네릭 클래스  (0) 2017.06.19
학점 계산  (0) 2017.06.19
가장 큰 수  (0) 2017.06.19
겜블링 게임  (0) 2017.06.19
가위바위보  (0) 2017.06.19
반응형

7.2>Scanner 클래스를 사용하여 5개 학점(‘A’, ‘B’, ‘C’, ‘D’, ‘F’)을 문자로 입력 받아 ArrayList에 저장한다. 그리고 ArrayList를 검색하여 학점을 점수(A=4.0, B=3.0, C=2.0, D=1.0, F=0)로 변환하고 평균을 계산하여 그 결과를 출력하는 프로그램을 작성하라.


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
package SecondHW;
import java.util.*//scanner와 vector 사용을 위한 임포트
public class Grades {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in); //스캐너 객체와 레퍼런스 변수 생성
        ArrayList<Character> grade= new ArrayList<Character>(); //ArrayList 객체와 레퍼런스 변수 생성, 스레드 동기화 지원 안함
        double sum=0//실수 변수 sum 초기화 0
        int count=0//정수 변수 count 초기화 0
        double score[]=new double[5]; //실수형 배열 크기 5 score
        System.out.print("5개의 학점을 빈 칸으로 분리하여 입력하세요. (A/B/C/D/F)");
        while(count!=5//count가 5가 아닐때까지 반복, for를 쓰지 않은 이유는 A,B,C,D,F 이외의 것을 걸러내야해서 continue써야하는데
            //for 에서 continue 쓰면 증감식은 그대로 실행되어버리니까
        {
            String st = s.next(); //String에 문자열 입력
            char c = st.charAt(0); //지정된 index에 있는 문자 리턴해서 c에 대입
            if((c>='A'&&c<='D')||c=='F'//c가 A~D 혹은 F이면
            {grade.add(c); count++;} //grade에 c를 추가하고 count 증가
            else continue//아니면 continue;
        }
        for(int i=0;i<grade.size();i++//i=0부터 grade.size보다 작을때까지 반복, size는 5
        {
            if(grade.get(i)=='A')   //grade의 index에 해당하는 값이 A일때
            {score[i]=4.0;} //score[i]에 4.0 대입
            else if(grade.get(i)=='B'//grade의 index에 해당하는 값이 B일때
            {score[i]=3.0;} //score[i]에 3.0 대입
            else if(grade.get(i)=='C'//grade의 index에 해당하는 값이 C일때
            {score[i]=2.0;} //score[i]에 2.0 대입
            else if(grade.get(i)=='D'//grade의 index에 해당하는 값이 D일때
            {score[i]=1.0;} //score[i]에 1.0 대입
            else if(grade.get(i)=='F'//grade의 index에 해당하는 값이 F일때
            {score[i]=0.0;} //score[i]에 0.0 대입
            System.out.print(score[i]+" "); //socre[i]와 공백문자 출력
            sum+=score[i]; //sum에 sum과 score[i] 더한 값 대입
        }
        System.out.println(); //개행문자 출력
        System.out.print("평균 : "+sum/grade.size() ); //평균 출력}}
 
cs



반응형

'컴퓨터 & 프로그래밍 & 전자공학 > JAVA' 카테고리의 다른 글

제네릭 클래스  (0) 2017.06.19
학생 정보  (0) 2017.06.19
가장 큰 수  (0) 2017.06.19
겜블링 게임  (0) 2017.06.19
가위바위보  (0) 2017.06.19
반응형

7.1>Scanner 클래스를 사용하여 10개의 실수 값을 키보드로부터 읽어 벡터에 저장한 후, 벡터를 검색하여 가장 큰 수를 출력하는 프로그램을 작성하라.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package SecondHW;
import java.util.*//scanner와 vector 사용을 위한 임포트
public class Biggest {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);  //스캐너 객체와 레퍼런스 변수 생성
        Vector<Double>v=new Vector<Double>(10); //벡터 객체와 레퍼런스 변수 생성 초기 cap이 10
        for(int i=0;i<v.capacity();i++//i=0부터 v.cap (즉 10) 미만일때까지 반복 즉 10번 반복
        {
            double a = s.nextDouble(); //double형 변수 a 에 키보드 입력 double로 받음
            v.add(a); //자동 박싱 v.add(new Double(a))와 같음 , 벡터 v에 a 삽입
        }
        double biggest = v.get(0); //가장 큰 숫자를 넣을 double형 변수 biggest에 초기값 v의
 //첫번째 원소 대입
        for(int i=1;i<v.size();i++//0은 비교할필요 없으니 1부터 size(10) 미만, 
//즉 1~9의 인덱스에 해당하는 원소 비교
        {
            if(biggest<v.get(i)) //biggest보다 해당 인덱스 원소가 크면
                biggest=v.get(i); //biggest에 그 원소 대입
        }
        System.out.println("가장 큰 수는 "+biggest+" 입니다."); //제일 큰 것 출력
    }}
 
cs




반응형

'컴퓨터 & 프로그래밍 & 전자공학 > JAVA' 카테고리의 다른 글

학생 정보  (0) 2017.06.19
학점 계산  (0) 2017.06.19
겜블링 게임  (0) 2017.06.19
가위바위보  (0) 2017.06.19
대문자 개수 세기  (0) 2017.06.19
반응형

6.12> 겜블링 게임을 만들어보자. 두 사람이 게임을 진행한다. 두 사람의 이름은 처음에 키보드를 통해서 입력 받는다. 게임에 참여하는 사람은 Person클래스로 작성하도록 하라. 각 사람이 번갈아 가면서 게임을 진행한다. 각 사람이 자기 차례에서 <Enter> 키를 입력하면 프로그램은 3개의 난수를 발생시키고 이 3개의 숫자가 모두 같은 지 판단한다. 동일하다면 승자가 되며 게임을 끝낸다. 게임은 끝날 때까지 두 사람이 번갈아 가면서 진행한다. 숫자의 범위를 너무 크게 잡으면 3개의 숫자가 일치하게 나올 가능성이 적기 때문에 편리를 위해 숫자의 범위는 0~3까지만 한다.


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
package SecondHW;
import java.util.*//스캐너 사용 위한 임포트
class Person{String name;} //Person 클래스와 그 원소 문자열 name
public class Gembling {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in); //스캐너객체 s
        Person p1=new Person(); //Person 객체 를가리키는 레퍼런스 변수 p1
        Person p2=new Person(); //Person 객체 를가리키는 레퍼런스 변수 p2
        int rand[]= new int[3]; //사이즈3의 인트형 배열 rand
        int round=1//int형변수 round 선언 및 1로 초기화
        int who=0//int형변수 who 선언 및 0으로 초기화
        System.out.print("플레이어1의 이름을 입력하세요: ");
        p1.name=s.nextLine(); //p1.name을 nextLine으로 받음(개행문자 미포함)
        System.out.print("플레이어2의 이름을 입력하세요: ");
        p2.name=s.nextLine();//p2.name을 nextLine으로 받음(개행문자 미포함)
        while(true){
            who=round%2//who는 round를 2로나눈 나머지 즉 홀수면 p1, 짝수면 p2
            if(who==1){
                System.out.print(p1.name + "님 차례입니다. 엔터 입력>>");
            }
            else if(who==0){
                System.out.print(p2.name + "님 차례입니다. 엔터 입력>>");
            }
            String check=s.nextLine(); //문자열 check를 nextLine으로 받음(nextLine은 개행 미포함)
            //즉 엔터만 치면 빈 문자열이 됨.
            if(check.isEmpty()){  // isEmpty : 스트링길이0이면true, 아니면 false
                for(int i=0;i<3;i++//3번 반복
                {    rand[i]=(int)(Math.floor(Math.random()*4)); 
                // 균일한 확률을 위해 곱하기 4한 후 내림 사용
                    System.out.print(rand[i]+" ");} //각 원소 출력
                System.out.println();} //3개 출력후개행문자 출력
            if((rand[0]==rand[1])&&(rand[1]==rand[2])) //0번,1번,2번 원소가 전부 같으면
            {if(who==1){ //p1일때
                System.out.println(p1.name+"님의 승리입니다 축하합니다!" );
                break;} //승리축하문자 출력후 루프 탈출
            else if(who==0){//p2일때
                System.out.println(p2.name+"님의 승리입니다 축하합니다!" );
                break;}} //승리축하문자 출력후 루프 탈출
            round++//승리하지못했을시 round증가시키고 루프 반복
        }}}
 
cs






반응형

'컴퓨터 & 프로그래밍 & 전자공학 > JAVA' 카테고리의 다른 글

학점 계산  (0) 2017.06.19
가장 큰 수  (0) 2017.06.19
가위바위보  (0) 2017.06.19
대문자 개수 세기  (0) 2017.06.19
메소드 오버라이딩  (0) 2017.06.18
반응형

6.11> Math.random()의 난수 발생기를 이용하여 사용자와 컴퓨터가 하는 가위바위보 게임을 만들어보자. 가위, 바위, 보는 각각 1, 2, 3 키이다. 사용자가 1, 2, 3 키 중 하나를 입력하면 동시에 프로그램도 난수 발생기를 이용하여 1, 2, 3 중에 한 수를 발생시킨다. 그리고 사용자와 컴퓨터 둘 중 누가 이겼는지를 판별하여 승자를 출력하라. 게임은 반복되도록 작성한다


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
package SecondHW;
import java.util.Scanner//스캐너 사용을 위한 import
 
public class RCP {
 
    public static void main(String[] args) {
        int com;
        int user;
        int diff; //int 형 변수 com,user,diff 각각 컴퓨터, 사용자, 컴퓨터-사용자가 들어감
        Scanner s = new Scanner(System.in); //스캐너 객체 s
            while(true//무한 반복
            {
                System.out.print("가위(1),바위(2),보(3) 중 하나를 입력하세요 (4)는종료 : "); //문장 출력
                user=s.nextInt(); //user에 int 타입으로 리턴된 값 대입
                if(user==4//user가 4면 무한 루프 탈출
                    break;
                com=(int)(Math.floor(Math.random()*3)+1);  //*2+1 을하면 2가 나올 확률히 현저히 높아져 내림으로 하였습니다. com에 1~3중 무작위 정수 대입
                diff=user-com; //diff는 user에서 com 뺀 값
                if(com==1){ //com==1이면 컴퓨터는 가위라는 것 출력
                    System.out.println("컴퓨터는 가위를 냈습니다.");
                }
                else if(com==2){ //com==2이면 컴퓨터는 바위라는 것 출력
                    System.out.println("컴퓨터는 바위를 냈습니다.");
                }
                else if(com==3//com==1이면 컴퓨터는 보자기라는 것 출력
                    {System.out.println("컴퓨터는 보자기를 냈습니다.");}
                if(diff==0//diff==0이면 비겼음을 출력
                    System.out.println("비겼습니다.");
                else if(diff==1||diff==-2//diff==1이나 -2면 사용자가 승리(진리표를 만들어보면 승리는 두가지 조건밖에 없음)
                {
                    System.out.println("축하합니다! 당신이 이겼습니다.");
                } 
                else if(diff==2||diff==-1//diff==2이나 -1면 컴퓨터가 승리(진리표를 만들어보면 승리는 두가지 조건밖에 없음)
                {
                    System.out.println("네가 졌다 이 악마야!.");
                }}    }}
 
cs


반응형

'컴퓨터 & 프로그래밍 & 전자공학 > JAVA' 카테고리의 다른 글

가장 큰 수  (0) 2017.06.19
겜블링 게임  (0) 2017.06.19
대문자 개수 세기  (0) 2017.06.19
메소드 오버라이딩  (0) 2017.06.18
추상 클래스  (0) 2017.06.18
반응형

3.11>배열과 반복문을 이용하여 프로그램을 작성해보자. 키보드에서 정수로 된 돈의 액수를 입력 받아 오만 원권, 만 원권, 천 원권, 500원짜리 동전, 100원짜리 동전, 50원짜리 동전, 10원짜리 동전, 1원짜리 동전이 각 몇 개로 변환되는지 출력하라. 예를 들어 65370이 입력되면 오만 원권 1, 만 원권 1, 천 원권 5, 100원짜리 동전 3, 50원짜리 동전 1, 10짜리 동전 2개이다. 이때 반드시 다음의 배열을 이용하고 반복문으로 작성하라.


int []unit={50000,10000,1000,500,100,50,10,1}; //환산할 돈의 종류


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
package HW1_JAVA;
import java.util.Scanner//Scanner 클래스의 위치
class Sort{ //Sort 클래스 선언
    void sorting(int arr[], int gold){ //sorting 메소드 선언 인자 int형 배열 arr, int형 변수 gold
        int i;  int d;  //int형 변수 i, d 선언
        for(i=0;i<arr.length;i++//isms 0부터 배열 arr의 길이보다 작을 때까지
        {d=gold/arr[i]; //d는 gold를 arr[i]로 나눈 것의 몫
            if(d==0//d가 0이면 루프를 완전히 돌지 않고 i를 증가시킨 후 다시 돌게 만든다.
                continue;
            if(i<=2//i가 2 이하이면 원과 매로 출력
                System.out.println(arr[i]+"원권 "+d+"매");
            else  //i가 2초과이면 동전과 개로 출력
                System.out.println(arr[i]+"원짜리 동전 "+d+"개");
        gold%=arr[i];  // gold = gold % arr[i] 와 같다. (나머지)
        }    
    }
}
public class MoneyDivison { //class MoneyDivison 선언
    public static void main(String[] args) {
        Scanner s=new Scanner(System.in); //Scanner 클래스 객체와 레퍼런스 변수 선언
        Sort so = new Sort(); //Sort 클래스 객체와 레퍼런스 변수 선언
        int []unit={50000,10000,1000,500,100,50,10,1}; // int형 배열 unit 선언과 초기화
        System.out.print("금액을 입력하세요>>");
        int gold=s.nextInt(); // int형 변수 gold 선언과 정수형 입력
        so.sorting(unit, gold); //sorting 메소드를 unit배열과 gold변수를 넣어 호출
    }
}
 
cs




반응형

'컴퓨터 & 프로그래밍 & 전자공학 > JAVA' 카테고리의 다른 글

ArrayUtility class  (0) 2017.06.18
직사각형 클래스  (0) 2017.06.18
2차원 배열  (0) 2017.06.18
정수 오름차순 정렬기  (0) 2017.06.18
하위 문자 모두 출력하기  (0) 2017.06.18
반응형

3.6> 키보드로부터 정수를 10개 입력 받아 배열에 저장하고 증가하는 순서로 정렬하고 이들을 출력하는 프로그램을 작성하라.


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
package HW1_JAVA;
import java.util.Scanner// Scanner의 경로
class Quick_Sort{  // class Quick_Sort 선언
    void quick(int arr[]){  //메소드 quick 선언 인자 int형 배열 arr[]
        int temp=0int i=0int j=0//인트형 변수 temp,i,j 선언 및 초기화
        for(i=0;i<10;i++//i가 0에서 9까지 루프
        { // 배열의 0번째 원소를 1~9와 비교 1번째 원소를 2~9와 비교... 이것을 9번째 원소까지 반복하는 알고리즘
            for(j=i+1;j<10;j++//j가 i+1에서 9까지 루프
            {
                if(arr[i]>arr[j])  //arr[i]가 arr[j]보다 크면
                {
                    temp=arr[i];  //빈 물컵 temp에 arr[i]를 넣고
                    arr[i]=arr[j]; // arr[j]를 arr[i] 에 넣는다.
                    arr[j]=temp; // 그리고 temp 를 arr[j]에 넣는다. 
                }
            }
        }
    }
    void printing(int arr[]){ //메소드 printing 선언 인자 int형 배열 arr[]
        for(int i=0;i<10;i++//i가 0에서 9까지 반복
        {
            if(i==9//i가 9면 쉼표 없이 출력
            System.out.print(arr[i]);
            else // 아니면 뒤에 쉼표 붙여준다.
            System.out.print(arr[i] + ", ");
        }
    }
}
public class Sorting { //퍼블릭 클래스 Sorting 선언
    public static void main(String[] args) {
        Quick_Sort q=new Quick_Sort(); // 퀵소트 객체와 레퍼런스 변수 생성
        Scanner s=new Scanner(System.in);  // 스캐너 객체와 레퍼런스 변수 생성
        int arr[]=new int[10]; // 크기가 10인 인트형 변수 arr 생성
        System.out.print("정수 10개를 입력하세요>>");
        for(int i=0;i<10;i++//i가 0부터 9까지 반복
        {
            arr[i]=s.nextInt(); //arr[i] 에 인트형으로 입력을 넣어준다.
        }
        q.quick(arr); //quick 메소드 호출
        q.printing(arr); //printing 메소드 호출
    }
}
 
cs




반응형

'컴퓨터 & 프로그래밍 & 전자공학 > JAVA' 카테고리의 다른 글

돈 단위 나누기  (0) 2017.06.18
2차원 배열  (0) 2017.06.18
하위 문자 모두 출력하기  (0) 2017.06.18
직사각형 충돌  (0) 2017.06.18
윤년 판별기  (0) 2017.06.18
반응형

2.6> 키보드로부터 특정 연도를 입력 받아 윤년인지 아닌지를 판별하는 프로그램을 작성하라. 연수가 4로 나누어 떨어지는 해는 우선 윤년으로 하되, 그 중에서 100으로 나누어 떨어지는 해는 평년으로 하고, 다만 400으로 나누어 떨어지는 해는 다시 윤년으로 판정한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package HW1_JAVA; 
import java.util.Scanner// 스캐너 클래스의 경로 명이 java.util.Scanner
class Testing{            // Testing 클래스 선언
    void test(int year){  //test 메소드 선언 argument : int형 변수 year
        if(((year%4==0)&&(year%100!=0))||(year%400==0))
            System.out.println("윤년입니다.");
        else
            System.out.println("윤년이 아닙니다.");
    }//(4의배수 이면서 100의 배수가 아닌것) 혹은 (400의 배수) 이면 윤년입니다 출력 아니면 윤년이아닙니다 출력
}
public class YunYear {  //YunYear class 선언
    public static void main(String[] args) { 
        Scanner s=new Scanner(System.in); //레퍼런스 변수 s와 Scanner class의 객체 생성
        Testing t=new Testing(); //레퍼런스 변수 t와 Testing class 의 객체 생성
        int year=0//int 형 변수 year의 선언 및 초기화
        while(true){  // 무한 루프
            System.out.println("연도를 입력하세요(-1은 종료)>>");
            year=s.nextInt();  //year에 정수형 입력 받음
            if(year==-1break//year이 -1이면 루프 탈출
            t.test(year);;  //오브젝트 t의 메소드 test 호출
        }}}
 
cs




반응형

'컴퓨터 & 프로그래밍 & 전자공학 > JAVA' 카테고리의 다른 글

정수 오름차순 정렬기  (0) 2017.06.18
하위 문자 모두 출력하기  (0) 2017.06.18
직사각형 충돌  (0) 2017.06.18
삼각형 만들기  (0) 2017.06.18
369 게임  (0) 2017.06.18

+ Recent posts