반응형

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
반응형

6.4> int 타입의 x, y, radius 필드를 가지는 Circle 클래스를 작성하라. Equals() 메소드를 재정의하여 두 개의 Circle 객체의 반지름이 같으면 두 Circle 객체가 동일한 것으로 판별하도록 하라. Circle 클래스의 생성자는 3개의 인자를 가지며 x, y, radius 필드를 인자로 받아 초기화한다


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
package SecondHW;
class Circle{ //default 접근의 Circle 클래스
    int x; //int 형 변수 x
    int y;//int 형 변수 y
    int radius;//int 형 변수 radius
    public Circle(int x,int y,int radius){ //Circle 클래스의 생성자
        this.x=x; //객체 의 x에 인자 x 대입
        this.y=y; //객체 의 y에 인자 y 대입
        this.radius=radius; //객체 의 radius에 인자 radius 대입
    }
     public boolean equals(Circle c2){ //java.lang 패키지에 속한 Object 클래스(자바클래스구조의 최상위)의 equals 메소드 오버라이딩
        if(this.radius==c2.radius) //객체의 radius와 인자 c2의 radius 비교
            return true//맞으면 true 반환
        else
            return false//다르면 false 반환}}
public class CircleDicision {
 
    public static void main(String[] args) {
        Circle cir1 = new Circle(1,2,3); //cir1 의 x=1,y=2,radius=3으로 초기화
        Circle cir2 = new Circle(2,4,3); //cir2 의 x=2,y=4,radius=3으로 초기화
        System.out.printf("cir1의  x :  %d y : %d  rad : %d \n",cir1.x,cir1.y,cir1.radius); //객체의 인트형 변수들 출력
        System.out.printf("cir2의  x :  %d y : %d  rad : %d \n",cir2.x,cir2.y,cir2.radius); //객체의 인트형 변수들 출력
        if(cir1.equals(cir2)) //cir1.equals(cir2)가 참이면
            System.out.println("같은 원입니다."); //같은 원 출력
        else //아니면
            System.out.println("다른 원입니다."); //다른 원 출력
    }
}
 
cs




반응형

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

가위바위보  (0) 2017.06.19
대문자 개수 세기  (0) 2017.06.19
추상 클래스  (0) 2017.06.18
상속 클래스  (0) 2017.06.18
ArrayUtility class  (0) 2017.06.18
반응형

5.4> main() 함수를 다음과 같이 수행할 수 있도록 하기 위한 CPoint 클래스와 CColorPoint 클래스를 작성하고 전체 프로그램을 완성하라. CColorPoint 클래스의 어떤 메소드에서도 System.out.println()을 호출해서는 안 된다. CPoint 클래스는 생성자가 오직 하나뿐이다.


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
package HW1_JAVA;
class CPoint{ //class CPoint 선언
    int a; int b; String s;  //int형 변수 a,b 와 String s 선언
    protected CPoint(int a, int b){ //int a와 int b를 argument 로 갖는 생성자
        this.a=a; this.b=b; this.s=""//this.a에 a대입 this.b에 b 대입 s에 "" 대입(색깔들어갈자리)
    }
    void show(){
        System.out.println("("+a+","+b+")"+s); // a와 b와 s를 출력하는 메소드 show
    } //toString 메소드는 Object 클래스에 속한다. 
    public String toString(){ //메소드 오버라이딩 시 슈퍼 클래스 메소드의 접근지정자보다 접근 범위가 좁아질 수 없다.
        return "("+a+","+b+")"+" 입니다";
    } //toString : println의 인자로 객체의 레퍼런스 변수가 전달되면 해당 인스턴스의 toString 메소드가 호출되면서
    } // 리턴값으로 반환되는 문자열이 나온다.
class CColorPoint extends CPoint{ //CPoint를 상속하는 클래스 CColorPoint
        CColorPoint(int a, int b,String s)
        {
            super(a,b); //CColorPoint의 슈퍼클래스인 CPoint의 생성자 호출
            this.s=s; // this.s에 인자 s 대입
        }
    }
public class PointCl {
    public static void main(String[] args) {
        CPoint a,b; //CPoint 형 클래스를 가리키는 레퍼런스 변수 a,b
        a=new CPoint(2,3); // CPoint 클래스의 객체 생성(인자는 2,3) 레퍼런스 변수는 a
        b=new CColorPoint(3,4,"red"); //업캐스팅된 CColorPoint 클래스의 객체를 가리키는 레퍼런스변수 b
        a.show(); //a.show 메소드 호출
        b.show(); //b.show 메소드 호출
        System.out.println(a); //a 출력인데 a.toString의 리턴값이 출력됨
        System.out.println(b); //b 출력인데 b.toString의 리턴값이 출력됨
    }
}
 
cs




반응형

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

메소드 오버라이딩  (0) 2017.06.18
추상 클래스  (0) 2017.06.18
ArrayUtility class  (0) 2017.06.18
직사각형 클래스  (0) 2017.06.18
돈 단위 나누기  (0) 2017.06.18
반응형

4.4 다음 두 개의 static 메소드를 가진 ArrayUtility2 클래스를 만들어보자. ArrayUtility2 클래스를 이용하는 테스트용 프로그램도 함께 작성하라.


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
package HW1_JAVA;
class ArrayUtility2{//s1과 s2를 연결한 새로운 배열 리턴
    static int[] concat(int s1[], int s2[]){ //int형배열을 리턴으로하는 메소드 concat(인자 int형배열 2개)
        int conc[]=new int[s1.length+s2.length]; //s1과 s2 길이를 더한 길이를 갖는 인트형 배열 conc
        int i; //int 형 변수 i 선언
        for(i=0;i<conc.length;i++//i=0부터 conc의 길이보다 작을 때까지 반복
        {
            if(i<=4//i가  4 이하이면 conc[i]에 s1[i] 대입
            conc[i]=s1[i];
            else    //i가 5이상이면 conc[i]에 s2[i-5] 대입
            conc[i]=s2[i-5];
        }
        return conc;}  //conc 배열 리턴
    static int[] remove(int s1[], int s2[]){ //s1에서 s2 배열의 숫자를 모두 삭제한 새로운 배열 리턴
        int i; int j; //인트형 변수 i,j 선언
        int s3[]=new int[s1.length]; //s1.length의 길이를 갖는 배열 s3 선언
        LABEL : for(i=0;i<s1.length;i++//i는 0부터 s1.length 미만까지 반복
        {
            for(j=0;j<s2.length;j++//j는 0부터 s2.length 미만까지 반복
            {
                if(s1[i]==s2[j])  //s1[i]와 s2[j]가 같으면 루프 중단 후 LABEL로 점프(증가식은 진행됨)
                    continue LABEL;
            }
            s3[i]=s1[i]; //s3[i]에 s1[i] 대입
        }
        return s3;} } //배열 s3 리턴
public class ArrUse {
    public static void main(String[] args) {
        ArrayUtility2 ut=new ArrayUtility2(); //ArrayUtility2 class의 객체와 레퍼런스 변수 선언
        int a[]={1,2,3,4,5}; //int형 배열 a 선언 및 초기화
        int b[]={3,4,5,6,7}; //int형 배열 b 선언 및 초기화
        int c[]=new int[a.length+b.length]; //int형 배열 c 선언
        int d[]=new int[a.length]; //int형 배열 d 선언
        int i; //int형 변수 i 선언
        c=ut.concat(a, b); //배열 c에 concat 메소드의 리턴값 대입
        d=ut.remove(a, b); //배열 d에 remove 메소드의 리턴값 대입
        for(i=0;i<c.length;i++//i=0부터 c.length 미만까지 반복
        {
            System.out.print(c[i]+" "); //c[i]와 띄어쓰기 출력
        }
        System.out.println(); // 개행문자 출력
        for(i=0;i<d.length;i++//i=0부터 d.length 미만까지
        {
            if(d[i]!=0//int형 배열은 0으로 자동초기화 되기 때문에 출력안하려면 논리판별
            System.out.print(d[i]+" "); //d[i]와 띄어쓰기 출력
        }}}
 
cs






반응형

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

추상 클래스  (0) 2017.06.18
상속 클래스  (0) 2017.06.18
직사각형 클래스  (0) 2017.06.18
돈 단위 나누기  (0) 2017.06.18
2차원 배열  (0) 2017.06.18
반응형

4.2>. 다음과 같은 멤버를 가지는 직사각형을 표현하는 Rectangle 클래스를 작성하라.

- int 타입의 x1, y1, x2, y2 필드 : 사각형을 구성하는 두 점의 좌표

- 생성자 2: 매개 변수 없는 생성자와 x1, y1, x2, y2의 값을 설정하는 생성자

- void set(int x1, int y1, iny x2, int y2) : x1, y1, x2, y2좌표 설정

- int square() : 사각형 넓이 리턴

- void show() :좌표와 넓이 등 직사각형 정보의 화면 출력

) 사각형의 좌표는 (0,0), (0,0)입니다.

- boolean equals(Rectangle r) : 인자로 전달된 객체 r과 현 객체가 동일한 직사각형이면 true 리턴

 

Rectangle을 이용한 main() 메소드는 다음과 같으며 이 main() 메소드가 잘 작동하도록 하라.

public class RectManager {

             public static void main(String args[]) {

                           Rectangle r = new Rectangle();

                           Rectangle s = new Rectangle(1,1,2,3);

                           r.show();

                           s.show();

                           System.out.println(s.square());

                           r.set(-2,2,-1,4);

                           r.show();

                           System.out.println(r.square());

                          if(r.equals(s))

                                        System.out.println(" 사각형은 같습니다.");

             }

}



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
package HW1_JAVA;
class Rectang{ //Rectang class 선언
        int x1,y1,x2,y2; //int 형 변수 x1,y1,x2,y2 선언
        Rectang(){  //constructor Rectang 아규먼트 없을때
            this.x1=0;  // 객체의 x1,y1,x2,y2에 0 대입
            this.y1=0;
            this.x2=0;
            this.y2=0;}
        Rectang(int x1, int y1, int x2, int y2){
            this.x1=x1;  //객체의 x1,y1,x2,y2에 인자 x1,y1,x2,y2 대입
            this.y1=y1;     //하는 constructor (오버로딩)
            this.x2=x2;
            this.y2=y2;}
        void set(int x1, int y1, int x2, int y2){
            this.x1=x1; //객체의 x1,y1,x2,y2에 인자 x1,y1,x2,y2 대입하는 메소드 set
            this.y1=y1;
            this.x2=x2;
            this.y2=y2;}
        int square(){ //메소드 square 선언
            int length=Math.abs(this.x2-this.x1); //밑변은 x2-x1한 것의 절대값
            int height=Math.abs(this.y2-this.y1); //높이는 y2-y1한 것의 절대값
            return length*height;} //밑변*높이 반환
        void show(){ //메소드 show 선언, 좌표와 밑변 넓이를 화면에 출력해준다. printf를 사용하였다.
            System.out.printf("사각형의 좌표는 (%d,%d),(%d,%d) 입니다.\n",this.x1,this.y1,this.x2,this.y2);
            System.out.printf("사각형의 밑변은 %d, 높이는 %d입니다.\n",Math.abs(this.x2-this.x1),Math.abs(this.y2-this.y1));;
            System.out.printf("사각형의 넓이는 %d입니다.\n",square());}
        boolean equals(Rectang r){ //리턴값 true와 false만 있는 메소드 equals
        if((Math.abs(this.x2-this.x1)==Math.abs(r.x2-r.x1))&&(Math.abs(this.y2-this.y1)==Math.abs(r.y2-r.y1)))
            return true//밑변길이와 높이를 비교해서 둘다 같으면 true 반환
        else //아니면 false 반환
            return false;}}
public class Square {
    public static void main(String[] args) {
        Rectang r = new Rectang();  //인자없는 생성자로 생성한 Rectang의 객체와 레퍼런스 변수 r
        Rectang s = new Rectang(1,1,2,3); //인자를 넣어준 Rectang의 객체와 레퍼런스 변수 s
        r.show(); //r이 가리키는 객체의 show 메소드 호출
        s.show(); //s가 가리키는 객채의 show 메소드 호출
        System.out.println(s.square()); //s가 가리키는 객체의 square 메소드 호출 후 리턴 값 출력
        r.set(-2,2,-1,4); //r이 가리키는 객체의 set 메소드 호출 
        r.show(); //r이 가리키는 객체의 show 메소드 호출
        System.out.println(r.square()); //r이 가리키는 객체의 square 메소드 호출 후 리턴 값 출력
        if(r.equals(s)) //만약 r.equals(s)가 ture를 반환하면(r과 s 비교)
            System.out.println("두 사각형은 같습니다.");  // 해당 스트링 출력
    }}
 
cs




반응형

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

상속 클래스  (0) 2017.06.18
ArrayUtility class  (0) 2017.06.18
돈 단위 나누기  (0) 2017.06.18
2차원 배열  (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.7>4x42차원 배열을 만들고 이곳에 1에서 10까지 범위의 정수를 랜덤하게 생성하여 정수 16개를 배열에 저장하고 2차원 배열을 화면에 출력하라.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package HW1_JAVA;
public class Two_Dimensinal_Array { //Two_Dimensinal_Array class 선언
    public static void main(String[] args) {
        int darr[][]=new int[4][4]; //4 * 4 사이즈의 인트형 이차원배열 darr 선언
        int i=0int j=0//int 형 변수 i,j 선언 및 초기화
        for(i=0;i<4;i++)  //i는 0부터 3까지 반복
        {
            for(j=0;j<4;j++//j는 0부터 3까지 반복
            {
                darr[i][j]=(int)Math.round(Math.random()*9+1);
                //random메소드는 0.0이상0.1미만난수 반환 round메소드는 반올림
                System.out.print(darr[i][j]+"    "); //darr[i][j]출력 후 탭키 입력
            }
            System.out.println(); //개행문자 입력
        }
    }
}
 
 
cs




반응형

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

직사각형 클래스  (0) 2017.06.18
돈 단위 나누기  (0) 2017.06.18
정수 오름차순 정렬기  (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
반응형

3.2> 키보드로부터 임의의 문자를 입력 받고 그 문자보다 알파벳 순위가 낮은 모든 문자를 출력하는 프로그램을 작성하라. 예를 들어 ‘e’를 입력 받았으면 그 결과는 다음과 같다.


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
package HW1_JAVA;
import java.io.*// InputStreamReader 를 사용 하기 위해 패키지 import
class Printing_alphabet{  // 클래스 선언
    void print_alpha(int num)  //메소드 선언, argument는 int형 변수 num
    {
        if(num<=97)  //97은 'a'의 아스키 코드 값이다.
            System.out.printf("%c",num); //'a'만 있으면 'a'만 출력
        else
            {for(int i=97;i<=num;(i)++// 'a'의 아스키 코드 값 97
            { //'a'부터 시작해서 어떤 알파벳의 아스키 코드 값으로 i가 증가할 때까지 루프 실행
                System.out.printf("%c ",i); //'a'부터 하나씩 출력
            }
            System.out.println(); //개행문자로 라인을 구분해준다.
            print_alpha(num-1); //recursive function 으로 반복하였습니다.
            }}}
 
public class LowerAlphabet {
    public static void main(String[] args) {
        InputStreamReader rd = new InputStreamReader(System.in); 
        //InputStreamReader 클래스의 오브젝트 생성 및 그것을 가리키는 레퍼런수 변수 rd
        Printing_alphabet p = new Printing_alphabet();
        //Printing_alphabet 클래스의 오브젝트 생성 및 그것을 가리키는 레퍼런스 변수 p
        try{
            System.out.print("알파벳 한 문자를 입력하세요>>"); 
        int a=rd.read(); //인트형 변수 a에 문자르르 하나 읽어 아스키 코드 값으로 넣어줌
        p.print_alpha(a); // print_alpha 메소드 실행
        }
        catch(IOException e){ //입출력 동작 실패 또는 인터럽트시 실행되는 부분
            System.out.println("입력 오류 발생");
        }}}
 
cs



반응형

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

2차원 배열  (0) 2017.06.18
정수 오름차순 정렬기  (0) 2017.06.18
직사각형 충돌  (0) 2017.06.18
윤년 판별기  (0) 2017.06.18
삼각형 만들기  (0) 2017.06.18
반응형

2.8> 2차원 평면에서 하나의 직사각형은 두 점으로 표현된다. (50, 50)(100, 100)의 두 점으로 이루어진 직사각형이 있다고 하자. 이때 키보드로부터 다른 직사각형을 구성하는 두 점 (x1. y1), (x2, y2)를 입력 받아 두 개의 직사각형이 서로 충돌하는지(겹치는지) 판별하는 프로그램을 작성하라.


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
package HW1_JAVA;
import java.util.Scanner// 스캐너 클래스의 경로 명이 java.util.Scanner
class Dot{ //Dot class 선언
    void testing_dot(int x1,int y1,int x2,int y2){ //testing_dot 메소드 선언 int형변수 x1,y1,x2,y2
        if(((x1>=50&&x1<=100)&&(y1>=50&&y1<=100))|| //x1이 50이상 100이하이고 y1이 50이상 100이하 혹은
        ((x2>=50&&x2<=100)&&(y2>=50&&y2<=100))|| //x2가 50이상 100이하 y2가 50이상 100이하 혹은
        ((x1<=50&&y1<=50)&&(x2>=100&&y2>=100))) //x1과 y1이 50이하이고 x2와 y2가 100이상
        System.out.println("사각형이 겹칩니다."); // 이면 사각형이 겹친다.
        else // 이외의 경우 사각형이 겹치지 않는다라는 string을 출력
            System.out.println("사각형이 겹치지 않습니다.");
    }}
public class Rectangle {  //Rectangle 클래스 선언
    public static void main(String[] args) {
        Scanner s=new Scanner(System.in); //레퍼런스 변수 s와 Scanner 클래스의 객체 생성
        Dot d=new Dot(); //레퍼런스 변수 d와 Dot 클래스의 객체 생성
        int x1,y1,x2,y2; //int형 변수 x1,y1,x2,y2 생성
        while(true){ //무한루프
        System.out.print("두점 (x1,y1), (x2,y2)의 좌표를 입력하세요>>(9999 4번 입력시 종료)");
        x1=s.nextInt(); y1=s.nextInt(); x2=s.nextInt(); y2=s.nextInt(); 
//x1,y1,x2,y2를 인트형으로 입력해줌
        if(x1==9999&&x2==9999&&y2==9999&&y1==9999)break
// x1,y1,x2,y2가 모두 9999일시 루프 탈출
        d.testing_dot(x1, y1, x2, y2);} //Dot class의 객체를 가리키는 d를 통해 testing_dot 메소드 호출
}}
 
cs




반응형

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

정수 오름차순 정렬기  (0) 2017.06.18
하위 문자 모두 출력하기  (0) 2017.06.18
윤년 판별기  (0) 2017.06.18
삼각형 만들기  (0) 2017.06.18
369 게임  (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
반응형


2.4> 369게임을 간단히 작성해보자. 1~99까지의 정수를 키보드로부터 입력 받고 정수에 3,6,9 중 하나가 있는 경우는 박수짝을 출력하고 두 개 있는 경우는 박수짝짝을 출력하는 프로그램을 작성하라. 예를 들면, 키보드로 입력된 수가 13인 경우 박수짝, 36인 경우 박수짝짝을 출력하면 된다.



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
package HW1_JAVA; //패키지 이름
import java.util.Scanner// 스캐너 클래스의 경로 명이 java.util.Scanner
class tsn{
    public void game(int num)
    {
        int t=num/10int o=num%10//t=num을 10으로 나눈 몫 o=num을 10으로 나눈 나머지
        if(((t%10==3)||(t%10==6)||(t%10==9))&&((o%10==3)||(o%10==6)||(o%10==9)))
        { // 10으로 나눴을 때 t와 o가 3이나 6이나 9가 동시에 나왔을 때 박수짝짝 출력
            System.out.println("박수짝짝");
        }
        else if(((t%10==3)||(t%10==6)||(t%10==9))||((o%10==3)||(o%10==6)||(o%10==9)))
        { // 10으로 나눴을 때 t와 o가 3이나 6이나 9가 둘중 하나만 나왔을 때 박수짝 출력
            System.out.println("박수짝");
        }
        else //이외의 경우 노우 박수~ 출력
            System.out.println("노우 박수~");
    }
}
public class threesixninegame {
    
    public static void main(String[] args) {
        int num=0//int형 변수 num 생성
        tsn b=new tsn(); //tsn 클래스인 레퍼런스 변수 b 와 객체 생성
        Scanner a=new Scanner(System.in); // Scanner class인 레퍼런스 변수a 와 객체 생성
        while(true// 무한 반복
        {
        System.out.print("1~99 사이의 정수를 입력하시오(-1은종료)>>"); // 스트링 출력
        num=a.nextInt(); //num에 int type 입력받아 리턴
        if(num==-1)break// num에 -1이 들어가면 while 루프를 빠져나온다.
        b.game(num); // b.game 메소드 호출
        }
    }}
 
cs




반응형

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

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

+ Recent posts