국비수업/CODE

code 실습 / 1️⃣5️⃣

밀김 2023. 3. 8. 14:33
728x90

 

 

 

 

✏️ Java 함수의 기본 형태를 적고, 구성하는 각 이름이 무엇인지 적어보세요(복습)

return, 반환 타입, 함수명, 인자 등등..

접근지시자 반환타입 함수이름(매개변수) {
    // 함수의 실행 코드
    return 반환값;
}

static int num(int a,int b){
	return a+b;
}

 

 

 

 

⭐️ LottoSimulator.java 파일을 생성하여 함수를 이용 다음 프로그램을 만들어주세요

public class LottoSimulator {

 public static void main(String[] args) {

     // 크기가 6인 Lotto 배열을 만들기

     // 화면에 다음 출력하기

     // 현재 로또 번호 :

     // ----- 1. 번호를 뽑기   2.마지막 번호를 다시 뽑기 ----

     // 사용자가 1번을 입력할시, 랜덤으로 번호 하나를 i번째에 할당. 그 후 현재 로또 번호를 출력

     // 사용자가 2번을 입력할시, 마지막 번호를 다시 뽑아 할당. 그 후 현재 로또 번호를 출력

 }

}

 

class Lotto {

 int num;

}

콘솔 예 사용자 입력은 초록색)

현재 로또 번호 :

1. 번호를 뽑기 2.마지막 번호를 다시 뽑기

> 2

아무런 로또번호가 뽑히지 않았습니다. 번호를 뽑아주세요.

 

현재 로또 번호 : [  ] [  ] [  ] [  ] [  ] [  ]

1. 번호를 뽑기 2.마지막 번호를 다시 뽑기

> 1

 

현재 로또 번호 : [ 3 ] [  ] [  ] [  ] [  ] [  ]

1. 번호를 뽑기 2.마지막 번호를 다시 뽑기

> 1

 

현재 로또 번호 : [ 3 ] [ 5 ] [  ] [  ] [  ]

1. 번호를 뽑기 2.마지막 번호를 다시 뽑기

> 2

 

마지막 번호를 다시 뽑았습니다

 

현재 로또 번호 : [ 3 ] [ 4 ] [  ] [  ] [  ]

1. 번호를 뽑기 2.마지막 번호를 다시 뽑기

 

package ex6.fun;
import java.util.Random;
import java.util.Scanner;
public class LottoSimulator {
	public static void main(String[] args) {

		Lotto[] lottos = new Lotto[6];
		//Lotto타입의 여섯칸짜리 객체 배열을 생성(배열의 이름만 만들어준것.아직 객체 생성 전)
		int index=0;

		while(true) {
			System.out.println("현재 로또 번호: \n───1.번호를 뽑기 2.마지막 번호를 뽑기───");
			
			Scanner scan = new Scanner(System.in);
			//메뉴값을 받기 위한 스캐너
			int menu = scan.nextInt();
			//입력받은 메뉴값을 menu에 저장
			Random rand = new Random();
			//로또 랜덤값
			
			Lotto lotto = new Lotto(); 
			//계속 새로운 객체를 생성해준다(자동차에 이름을 붙여줌)
			//형태가 Lotto인 객체 lotto를 생성. class Lotto가 여기서 객체로 만들어 지면서 num을 사용할수 있게됨 !하지만 연결은 아직 안한 상태!
			
			switch(menu){
			case 1:
				//for문을 쓰지 않고 배열 각각에 새로운 객체를 생성하는 방법
				lotto.num = rand.nextInt(45)+1;
		
				lottos[index] = lotto;
				//lottos배열에 index를 lotto라고 참조함. 이로써 lottos[lotto]에서 lotto는 lottos index의 참조변수가 된다
				//lotto는 Lotto lotto = new Lotto();로 객체를 생성해준 뒤라서 자유롭게 사용이 가능하다(num도 사용 가능)
				index++;
				//++를 안해주면 로또배열 첫번째에만 값이 들어간다
				//lottos[index]는 6이니까 6개의 칸까지만 생성이됨
				//index++과정을 마치면 for문으로 가서 구문을 실행하고 다시 case1으로 돌아와서 처음부터 반복되며 배열의 칸이 늘어남
				for(int i=0; i<lottos.length; i++) {
					if(lottos[i]!=null)
						//lottos 배열 값이 비어있지 않으면(값이 들어 있으면)
						System.out.printf("[%d]",lottos[i].num);
						//lottos 배열에 들어있는 num의 랜덤값을 출력해준다
					else//lottos 배열 값이 비어있으면 []만 출력 
						System.out.print("[ ]");
				}
				System.out.println();
				
				break;
			case 2:
				if(index==0) { //인덱스에 들어간게 없으면 밑에 문구가 출력
					System.out.println("아무런 로또번호가 뽑히지 않았습니다. 번호를 뽑아주세요.");

				}
				//첫타부터 2를 누르면 index가 초기화상태여서 (0)이 구문이 실행됨
				else if(index!=0)//index에 뭐가 들어 있으면
					--index;//index자리를 뒤로 가게 한다
				break;
				                                               
			}//switch
			}//while
	}//main
} // class



class Lotto{ //개체,엔티티 정의 (데이터타입Lotto) 이름이 부여되지 않은 붕붕이~~ (클래스가 많으면 카탈로그)
	int num; 
}

 

 

 

 

 


 

 

 

 

✏️ 다음 각 절차를 따라 작성하시오.

 

// 1-1. res/alphabet.txt 파일을 생성하고 다음 데이터를 복사/붙여넣으시오.

//   abcdefghijklmn

 

// 1-2. alphabet이라는 이름으로 문자 15개를 저장할 수 있는 배열 객체를 생성한다.

[      ] alphabet = [                                    ];

 

// 1-3. res/alphabet.txt 파일에 저장된 구분자가 없는 영문자 값들을 alphabet 배열에 로드한다. 

{

     // 코드를 작성하는 공간

 

    System.out.println(“로드 완료”);

}

		String[] alphabet = new String[15];
		
		FileInputStream fis = new FileInputStream("res/alphabet.txt");
		Scanner fsc = new Scanner(fis);
		
		for(int i=0; i<alphabet.length; i++) {
			alphabet[i] = fsc.nextLine();
			System.out.println(alphabet[i]);
		}
		
		fsc.close();
		fis.close();

 

 

 

// 1-4. 배열의 값이 다음과 같은 상태가 되도록 거꾸로 자리를 바꾼다.

//    nmlkjihgfedcba

 

{

     // 코드를 작성하는 공간

 

    System.out.println(“자리변경 완료”);

}

 

 

 

// 1-5. res/alphabet-out.txt 파일로 배열의 값들을 저장 

{

     // 코드를 작성하는 공간

 

    System.out.println(“저장 완료”);

}



 

		char[] alphabet = new char[14];
		int size = alphabet.length;
		{
			FileInputStream fis = new FileInputStream("res/alphabet.txt");
			
			for(int i=0; i<size; i++) {
				alphabet[i] = (char)fis.read();
				System.out.print(alphabet[i]);
			} //원래대로 저장
		}
		
		System.out.println();
		
		{
			for(int i=0; i<size; i++) {
				System.out.print(alphabet[size-1-i]);
			}//값을 뒤집기(저장은 아니고 걍 뒤집은거 출력하는거다)
		}
		
		System.out.println();
		
		{
			FileOutputStream fos = new FileOutputStream("res/alphabet.txt");
			for(int i=0; i<size; i++) {
				fos.write(alphabet[size-1-i]);
			}//뒤집은거 자체를 파일에 저장
			System.out.println("저장완료");
		}

 

 

 

 

 

 

 

728x90