code 실습 / 1️⃣5️⃣
✏️ 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("저장완료");
}