🦁 걸어봐 위엄 라잌어 라이옹/👀 주차별 과제

[대학교멋사🦁/JAVA] Assignment_2회차_1

우주수첩 2023. 4. 28. 03:15
728x90

 

Collection 을 사용하여 여러가지 간단한 문제를 구현해 보도록 합니다 뚜둔.

 

 


1. 다섯 명을 입력받고 이 씨 성인 사람을 출력하는 프로그램입니다

조건 : list을 활용하여 과제를 완성합니다.

 

package week2.assignment_1;

import java.util.*;

public class assignment_1_1 {

    // 이씨 성을 가진 사람을 찾는 메소드
    public static void findLees(List<String> list){
        for(String name : list){
            if(name.contains("이")){
                System.out.println(name);
            }
        }
    }


    public static void printProgramStart(){
        System.out.println("이 씨 성인 사람 찾아내는 프로그램");
        System.out.println("==============================");
        System.out.println("다섯명의 사람 이름을 한 줄씩 입력합니다.");
    }

    public static void main (String[] args){
        List<String> nameList = new ArrayList();
        Scanner sc = new Scanner(System.in);

        printProgramStart();
        for(int i=0;i<5;i++){
            String name = sc.next();
            nameList.add(name);
        }
        findLees(nameList);

    }
}
이 씨 성인 사람 찾아내는 프로그램
==============================
다섯명의 사람 이름을 한 줄씩 입력합니다.
윤도운
이진기
이민기
신예찬
신광일
이진기
이민기

 

 


 

2. 로또 번호를 생성하는 프로그램입니다. 

조건 : set을 활용하여 과제를 완성합니다.

 

package week2.assignment_1;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;

public class likelion_201902679_KHJ_02_set {

    public static Set<Integer> getRandomNum(int num){
        Set<Integer> randomNum = new HashSet<>();

        while(randomNum.size()<num){
            int randomInteger = (int)(Math.random()*45)+1;
            randomNum.add(randomInteger);
        }
        return randomNum;
    }
    public static void printrandomNum(Set<Integer> set){
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("생성된 로또번호: [");

        Iterator<Integer> iterator = set.iterator();
        while(iterator.hasNext()) {
            int numInSet = iterator.next();
            stringBuilder.append(numInSet);
            if(iterator.hasNext()) stringBuilder.append(", ");
        }
        stringBuilder.append("]");
        System.out.println(stringBuilder);
    }

    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);
        Set<Integer> randomNumSet;

        System.out.print("로또 번호를 몇개 생성하시겠습니까? ");
        int inputNum = sc.nextInt();
        randomNumSet = getRandomNum(inputNum);
        printrandomNum(randomNumSet);
    }
}
로또 번호를 몇개 생성하시겠습니까? 5
생성된 로또번호: [3, 21, 41, 45, 30]

 

Set은 값을 가져올 수 있는 get 메소드가 없답니당

 

그래서 Iterator 라는 반복자를 사용하여 값을 가져와야 한답니당

 

그리고 출력을 하려고 보니까 프린트 문이 넘무 더러워지길래

쪼꼼 깔꼼하게 쓰고 싶어서 간만에 생각난 Stringbuilder를 사용했답니당

한 3년만에 썼는데용

1학년때는 Stringbuilder도 그렇고 Iterator도 그렇고 쟤네가 뭔지도 모르겠고 그냥 무서웠는데 

이제 그냥 아무 생각 없는 존재가 되었다는게 새삼 신기하네여

 

 


 

3. 문자열을 거꾸로 출력하는 프로그램입니다.

조건 : stack을 활용하여 과제를 완성합니다.

 

package week2.assignment_1;

import java.util.Scanner;
import java.util.Stack;

public class likelion_201902679_KHJ_03_stack {

    public static Stack<Character> stringToStack(String str){
        Stack<Character> originCharStack = new Stack<>();
        for(char c : str.toCharArray()){
            originCharStack.push(c);
        }
        return originCharStack;
    }

    public static void printReversed(Stack<Character> orgStack){
        StringBuilder stringBuilder = new StringBuilder();
        while (!orgStack.empty()){
            stringBuilder.append(orgStack.pop());
        }
        System.out.println("문자열 출력 : "+stringBuilder);
    }
    
    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);

        System.out.print("문자열을 입력하세요 : ");
        String inputStr =  sc.next();
        System.out.println("거꾸로 출력합니다.");
        Stack<Character> originCharStack = stringToStack(inputStr);
        printReversed(originCharStack);

    }
}
문자열을 입력하세요 : olleh
거꾸로 출력합니다.
문자열 출력 : hello

 

Stack은 FILO(First In Last Out) 랍니다.

그래서 거꾸로 출력하려면 파파팝 팝팝 하면서 뒤에서부터 야무지게 꺼내주면 돼요

 

야호!

 

 

 

728x90