본문 바로가기

bitcamp/JAVA

기타_연습문제

1. 사용자로부터 받은 영문에서 자음과 모음 개수를 계산하는 프로그램을 작성하라.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Aeiou {
    private String s;
    private int i, m = 0;
    
    public String getS() {
        return s;
    }
    public void setS(String s) {
        this.s = s;
    }
 
    public void getMcnt() {
        String s1 = s.toUpperCase();
        for (i = 0; i < s1.length(); i++) {
            if (s1.charAt(i) == 'A' || s1.charAt(i) == 'E' || s1.charAt(i) 
                    == 'I' || s1.charAt(i) == 'O' || s1.charAt(i) == 'U')
                m++;
        }
        System.out.println("모음 개수: " + m);
        System.out.println("자음 개수: " + (s1.length() - m));
    }
}
 
cs

 

1
2
3
4
5
6
7
8
9
10
11
12
class Aeioumain {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Aeiou aeiou = new Aeiou();
        
        System.out.println("영문을 입력해주세요.");
        String s = sc.next();
        aeiou.setS(s);
        aeiou.getMcnt();
    }
}
 


cs

 

2. 사용자의 체중과 비교하여 저체중/표준/과체중인지를 판단하는 프로그램을 작성하라.

   (사용자로부터 키를 입력받아 표준 체중 계산)

 

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
//표준 체중 계산식은 다음을 사용하라.
//표준체중 = ( 키 - 100 ) * 0.9
 
class Weight {
    private int kg, cm;
 
    public int getKg() {
        return kg;
    }
    public void setKg(int kg) {
        this.kg = kg;
    }
    public int getCm() {
        return cm;
    }
    public void setCm(int cm) {
        this.cm = cm;
    }
    public void getVal() {
        double sw = (cm - 100* 0.9;
        if (sw == kg) {
            System.out.println("표준체중입니다.");
        } else if (sw > kg) {
            System.out.println("저체중입니다.");
        } else
            System.out.println("과체중입니다.");
    }
}
cs

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Weightmain {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Weight w = new Weight();
        
        System.out.println("체중을 입력해주세요.");
        int kg = sc.nextInt();
        System.out.println("신장을 입력해주세요");
        int cm = sc.nextInt();
        
        w.setKg(kg);
        w.setCm(cm);
        w.getVal();
    }
}
cs

 

3. 2와 100 사이에 있는 모든 소수(prime number)를 찾는 프로그램을 작성하라.

  cf) 주어진 정수 k를 2부터 k-1까지의 숫자로 나누어서 나머지가 0인 것이 하나라도 있으면 소수가 아니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Num{
    public static void main(String[] args) {
        int count = 0;
            for(int k = 2; k <= 100; k++){
                for(int n = 2; n <= k; n++){
                    if(k % n == 0) {
                       count++;
                    } 
                if(count == 1) {
                    System.out.println(k);
                }
                count=0;
          }            
     }
 }
 
cs

 

4. 사용자에게 받은 문자열을 역순으로 화면에 출력하는 프로그램을 작성하시오.

1)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//입력:abcde
//출력:edcba
 
class Reversewords {
    public static void main(String[] args) {
        String words;
 
        Scanner sc = new Scanner(System.in);
        words = sc.next();
 
        for (int i = words.length() - 1; i >= 0; i--) {
            System.out.print(words.charAt(i));
        }
    }
}
cs

 

2)

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
class Reverse {
    private String words;
 
    public Reverse() {
    }
    
    public Reverse(String words) {
        this.words = words;
    }
    public String getWords() {
        return words;
    }
    public void setWord(String words) {
        this.words = words;
    }
    public void input() {
        Scanner sc = new Scanner(System.in);
        System.out.println("입력할 단어를 넣으세요.");
        words = sc.next();
        sc.close();
    }
    public void reversePrint() {
        if (words == null) {
            System.out.println("단어 입력이 안되었습니다.");
            return;
        }
        for (int i = words.length() - 1; i >= 0; i--) {
            System.out.print(words.charAt(i));
        }
    }
}
cs

 

1
2
3
4
5
6
7
class Reversemain {
    public static void main(String[] args) {
        Reverse reverse = new Reverse();
        reverse.input();
        reverse.reversePrint();
    }
}
cs

 

 

 

5. String 을 이용하여 프로그래밍 하시오. **기본**

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//입력 : 990925-1012999
//출력 : 990925 1012999
 
class Number {
    private String str;
 
    public Number() {
    }
    public Number(String str) {
        this.str = str;
    }
    public void input() {
        Scanner sc = new Scanner(System.in);
        System.out.println("주민번호를 입력해주세요(-포함)");
        str = sc.nextLine();
        sc.close();
    }
    public void output() {
        String[] st = str.split("-");
        String ar1 = st[0];
        String ar2 = st[1];
        System.out.println(ar1 + " " + ar2);
    }
}
cs

 

1
2
3
4
5
6
7
class Numbermain {
    public static void main(String[] args) {
        Number number = new Number();
        number.input();
        number.output();
    }
}
cs

 

 

6. 아래를 프로그래밍 하시오. (단, 클래스로 구성할 것) **기본**

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
//입력:lee sunkyo
//출력:first name: lee second name:sunkyo
 
class Name {
    private String fname;
    private String sname;
 
    public String getFname() {
        return fname;
    }
    public void setFname(String fname) {
        this.fname = fname;
    }
    public String getSname() {
        return sname;
    }
    public void setSname(String sname) {
        this.sname = sname;
    }
    public void input() {
        Scanner sc = new Scanner(System.in);
        System.out.println("영문 성과 이름을 입력해주세요.");
        fname = sc.next();
        sname = sc.next();
        sc.close();
    }
    public void output() {
        System.out.println("first name: " + fname);
        System.out.println("second name: " + sname);
    }
}
cs

 

1
2
3
4
5
6
7
class Namemain {
    public static void main(String[] args) {
        Name name = new Name();
        name.input();
        name.output();
    }
}
cs

 

 

7. 아래를 프로그래밍 하시오.

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
/* 
입력 : 홍 길동 
출력 : 성 = 홍  이름 = 길동 
 
입력 : 홍길동 
출력 : 공백이 없군요. 다시 입력해주세요.  */
 
class Name {
    private String name;
    private int stop;
    private boolean a = true;
 
    void input() {
        Scanner sc = new Scanner(System.in);
        System.out.print("이름을 입력하세요 : ");
        name = sc.nextLine();
    }
    boolean cut() {
        stop = name.indexOf(" ");
        if (stop == -1) {
            System.out.println("공백이 없군요 다시 입력해주세요.");
            System.out.println();
            return a = true;
        }
        System.out.print("성: " + name.substring(0, stop));
        System.out.println("  이름: " + name.substring(stop + 1));
        return a = false;
    }
    void print() {
        while (a) {
            input();
            cut();
        }
    }
}
cs

 

1
2
3
4
5
6
class Namemain {
      public static void main(String[] args) {
          Name n = new Name();
          n.print();
      }
}
cs

 

8. 아래를 프로그래밍 하시오.

 · "Hello.java" 문자열에서 파일명과 확장자인 java를 분리시키는 프로그램을 짜시오.

 

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
/* 
입력: Hello.java
출력: 파일이름은:Hello 이며 확장자는 java 입니다.
 
입력: Java.avi
출력: 파일이름은:Java 이며 확장자는 avi 입니다.  */
 
class Hellojava {
    private String str;
 
    public Hellojava() {
    }
    public Hellojava(String str) {
        this.str = str;
    }
    public void input() {
        Scanner sc = new Scanner(System.in);
        System.out.println("문자열을 입력해주세요");
        str = sc.nextLine();
        sc.close();
    }
    public void output() {
        int n = 0;
        for (int i = 0; i <= str.length() - 1; i++) {
            if (str.charAt(i) == '.')
                n = i;
        }
        System.out.println("파일이름은 " + str.substring(0, n) + "이며 확장자는 " + str.substring(n + 1+ "입니다.");
    }
}
 
cs

 

1
2
3
4
5
6
7
class Hellomain {
    public static void main(String[] args) {
        Hellojava hello = new Hellojava();
        hello.input();
        hello.output();
    }
}
cs

 

 

9. Scanner 클래스 이용해서 한 줄 읽고, 공백으로 분리된 "단어"가 몇 개 들어 있는지 확인해보자.

· "그만"을 입력할 때까지 반복하는 프로그램이다. 힌트(split 함수를 이용해 볼것) 

 

1) main 함수만을 이용

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
/* 
입력 : Java Programming
출력 : 단어의 개수는 2
입력 : 자바 수업은 2층 C클래스
출력 : 단어의 개수는 4
입력 : 그만
출력 : 프로그램 종료  */
 
class Wordcountmain2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("단어개수 확인하기");
        
        while (true) {
            System.out.println("입력:");
            String sentence = sc.nextLine();
            if (sentence.equals("stop")) {
                System.out.println("프로그램 종료");
                break;
            }
            String[] words = sentence.split(" ");
            System.out.println("단어의 갯수는: " + words.length);
        }
        sc.close();
    }
}
cs

 

2) class 이용

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
class Wordcount {
    private String sentence;
    private String[] words;
    
    Wordcount(String sentence) {
        this.sentence = sentence;
    }
    private void wordSplit() {
        if (sentence == null) {
            System.out.println("입력값이 없습니다.");
            return;
        }
        this.words = sentence.split(" ");
    }
    private void wordPrint() {
        if (words == null) {
            System.out.println("입력값이 없습니다.");
            return;
        }
        System.out.println("단어의 갯수는: " + words.length);
        for (int i = 0; i < words.length; i++) {
            System.out.println("단어는" + words[i]);
        }
    }
    public void getResult() {
        wordSplit();
        wordPrint();
    }
}
cs

 

1
2
3
4
5
6
7
8
9
10
11
class Wordcountmain {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("단어개수 확인하기");
        while (true) {
            System.out.println("입력:");
            Wordcount wordCount = new Wordcount(sc.nextLine());
            wordCount.getResult();
        }
    }
}
cs

 

 

10. 대결 프로그램을 작성하시오.

 두 사람이 이름을 키보드로 입력 받으며 각 사람은 Person 클래스로 작성하라.

 그러므로 프로그램에는 2개의 Person 객체가 생성되어야 한다. 두 사람은 번갈아 가면서 게임을 진행하는데 각 사람이

 자기 차례에서 <Enter> 키를 입력하면, 3개의 난수가 발생되고 이 숫자가 모두 같으면 승자가 되고 게임이 끝난다.

 난수의 범위를 너무 크게 잡으면 3개의 숫자가 일치하게 나올 가능성이 적기 때문에 숫자의 범위는 1~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
/* 
1번째 선수 이름>>수희
2번째 선수 이름>>연수
[수희]:
3 1 1 아쉽군요!
[연수]:
3 1 3 아쉽군요!
[수희]:
2 2 1 아쉽군요!
[연수]:
1 1 2 아쉽군요!
[수희]:
3 3 3 수희님이 이겼습니다! */
 
class Person {
    public String name;
    private int num1, num2, num3;
    
    public Person(String name) {
        this.name = name;
    }
    public boolean getPlay() {
        num1 = (int)(Math.random() * 3+ 1;
        num2 = (int)(Math.random() * 3+ 1;
        num3 = (int)(Math.random() * 3+ 1;
 
        System.out.print("\t" + num1 + " " + num2 + " " + num3 + " ");
        
        if((num1==num2)&&(num2==num3)) {
            return true;
        }else {
            return false;
        }
    }
}
cs

 

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
class Personmain {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
 
        System.out.print("1번째 선수 이름 >> " );
        Person person1 = new Person(sc.next());
        System.out.print("2번째 선수 이름 >> " );
        Person person2 = new Person(sc.next());
        
        while(true) {
            System.out.println("[" + person1.name + "]:");
            sc.nextLine();
            if(person1.getPlay()){
                System.out.println("승리입니다!!");
                break;
            }else { 
                System.out.println("아쉽군요");
            }
            System.out.println("[" + person2.name + "]:");
            sc.nextLine();
            if(person2.getPlay()){
                System.out.println("승리입니다!!");
                break;
            }else { 
                System.out.println("아쉽군요");
            }    
        }
    }
}
cs

 

11. 문제 10번 게임을 n명이 하도록 수정하라.

· 실행 예시와 같이 게임에 참여하는 선수의 수를 입력받고 각 선수의 이름을 입력받도록 수정하라. 

 

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
 
/*
겜블링 게임에 참여할 선수 숫자>>3
1번째 선수 이름>>황
2번째 선수 이름>>이
3번째 선수 이름>>김
[황]:
    2  3  3  아쉽군요!
[이]:
    1  2  2  아쉽군요!
[김]:
    2  2  3  아쉽군요!
[황]:
    3  2  2  아쉽군요!
[이]:
    1  1  3  아쉽군요!
[김]:
    2  2  1  아쉽군요!
[황]:
    2  2  2  황님이 이겼습니다!   */
 
//난수 생성은 10번과 동일
 
class Personmain2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("겜블링 게임에 참여할 선수 숫자>> ");
        int num = sc.nextInt();
        Person2[] person = new Person2[num];
 
        for(int i = 0; i < person.length; i++) {
            System.out.print((i+1+ "번째 선수 이름>> ");
            person[i] = new Person2(sc.next());
        }
        
        while(true) {
            for(int j = 0; j < person.length; j++) {
                sc.nextLine();
                System.out.println("[" + person[j].name + "]: ");
                if(person[j].getPlay()){
                    System.out.println("승리입니다!!");
                    break;
                }else { 
                    System.out.println("아쉽군요");
                }
            }
        }
    }
}
cs

 

 

12. 문자열을 입력받아 한 글자씩 회전시켜 모두 출력하는 프로그램을 작성하라.

· 클래스로 작성할 필요 없이 메인에서 작성할 것

· [H·int] Scanner.nextLine()을 이용하면 빈칸을 포함하여 한 번에 한 줄을 읽을 수 있다.

· 참고

· 작성

1
2
3
4
5
6
7
8
9
10
11
12
13
 class Love {
    public static void main(String[] args) {
       Scanner sc = new Scanner(System.in);
       System.out.println("문장을 입력해주세요.");
       String str = sc.nextLine();
        
       for(int i = 1; i < str.length(); i++) {
       System.out.print(str.substring(i));
       System.out.println(str.substring(0, i));
       }
    sc.close();
    }
 }
cs

 

 

'bitcamp > JAVA' 카테고리의 다른 글

배열_연습문제  (0) 2021.01.17
배열  (0) 2021.01.17
메소드 오버로딩과 String 클래스  (0) 2021.01.17
클래스 변수와 메소드  (0) 2021.01.10
기타_연습문제  (0) 2021.01.10