210105

조영혜·2022년 1월 5일
0

Java

Q. 랜덤으로 숫자를 뽑아 사용자가 원치 않을 때까지 반복하는 덧셈프로그램 만들기.

종료 후 맞은개수/틀린개수 출력.

Scanner s = new Scanner(); //<콘솔창에 입력할 수 있는 도구
Random rd = new Random(); //<랜덤 도구

int num1 = rd.nextInt(); //정수형 랜덤 숫자 하나를 num1에 넣겠다. 
int num2 = rd.nextInt(10); //0~9까지의 숫자를 랜덤으로 뽑아 num2에 넣겠다. 
int num3 = rd.nextInt(10)+1; //1~10까지의 숫자 랜덤뽑아서 num3에 넣겠다.

int correct = 0;
int wrong = 0;

while(ture){ //<무한반복이니 while (not for)
  system.out.printf //원하는 출력서식이 있을 때 쉽게 쓸 수 있음. 
("%d + %d = ", num1, num2) //%d는 정수형. 컴마 이용해서 순차적으로 값 적어주기. 
  int input = s.nextInt(); //<콘솔창에 입력한 숫자를 input에 넣기. 

  if(intput = num1+num2){
  system.out.println("SUCCESS!");
  correct++; 
  
  num1 = rd.nextInt(10)+1;
  num2 = rd.nextInt(10)+1; //<답을 맞췄으면 랜덤 숫자로 재출제. 
  
  }else {
  system.our.pirntln("Fail!");
  wrong++;
  }

  system.our.print("계속하시겠습니까?")
  String y_n = s.next(); //<문자열 String 으로 Y/N입력받기. 
  
    if(y_n.equals("N")){
    system.out.println("종료")
    break; 
    }
    }
  Syetem.out.println("맞춘개수 : "+correct);
  Syetem.out.println("틀린개수 : "+wrong);

Q. 회원가입 / 로그인 프로그램 생성


Scanner s = new Scanner(System.in);
int a = 0; //1/2/3고르는 정수값 초기화. 

String [] id_arr = new String [3]; 
int [] pw_arr = new int[3]; // 3명의 로그인 정보 저장. 
int cnt = 0; //< 회원가입한 사람의 수를 카운팅해줄 변수. 


while(true){
  System.out.print("1.[회원가입] 2.[로그인] 3.[종료] >> ")
  a = s.nextInt();
  
    if(a == 1){
        system.out.println("==회원가입==");
        System.out.pirnt("아이디 : ")
        String id = s.next();
        System.out.pirnt("비밀번호 : ")
        int pw = s.nextInt();
        
        id_arr[cnt]=id;
        pw_arr[cnt]=pw;
        
        cnt++ // ++해줘야 두번째 회원가입 한 사람은 각 배열의 1번 인덱스에 저장. 
        
    }else if(a == 2){
        system.out.println("==로그인==");
        System.out.pirnt("아이디 : ")
        String id = s.next();
        System.out.pirnt("비밀번호 : ")
        int pw = s.nextInt();
        
          //입력값과 배열에 저장된 값 비교해야함. 
         
          //int a =0; //<로그인 실패를 알 수 있는 변수. id_arr[3]이 되면 실패하니까 
          배열의 값과 사용자가 입력한 값이 같다면 반복문 재생. 
          int a==3이 될때 반복문 끝. 
          하지만 int a는 for 문 안에서만 쓸 수 있으니까 for문 밖에서 int a 변수 선언. 
          
          int a = 0;
  1번방법) for(a<=id_arr.length, a++){
              if(id_arr[a] != null) { // 널값이 아닐 때만 밑에 조건문 실행한다. 
                if(id_arr[a].equals(id) && pw_arr[a]==pw){
                  System.out.println("로그인 성공");
                  
                  break;
                 }
                 
              }
           }
              
   2번방법) if(id_arr[0].equals(id) && pw_arr[0]==pw){
             System.out.println("로그인 성공");
           }if(id_arr[1].equals(id) && pw_arr[1]==pw){
             System.out.println("로그인 성공");
           }if(id_arr[2].equals(id) && pw_arr[2]==pw){
             System.out.println("로그인 성공");
           }
             break;
           
    }else if(a == 3){
        system.out.println("==종료==");
        break;
    }else {
        system.out.println("다시 선택해주세요.");
        }
    }
for (int i = 0; i<id_arr.length; i++){  //회원가입된 회원 정보 확인(배열에 값을 출력)
  system.out.println(id_arr[i]);
  system.out.println(pw_arr[i]); 
  }
  
//확장 for문 (배열 자료구조, arraylist(가변길이 구조.) 사용시 확인 할 때 사용하기 좋은 구조. for~each문)
for(String z(자료의 데이터형, 새로운 변수이름):id_arr(변수이름)){ 
  System.out.println(z); //하나의 데이터를 하나씩 꺼내주는 경우 좋음. 여러개 꺼낼 땐 위쪽 if문이 유용. 
}

Q. 사용자로부터 문제 다섯개에 대한 답을 입력받은 후 입력한 답이 실제 답과 동일한 지 확인 후 총점을 출력해주는 프로그램을 작성하시오. 한 문제 당 배점은 20점. 답은 1, 4, 3, 2, 1

  • break는 반복횟수가 정해져있는 for문에서는 잘 안쓰고 무한반복인 while문에서 자주 쓰임.

  • 스트링 타입은 입력 안하면 기본으로 null값.
    숫자 타입은 입력 안하면 기본 0값.

  • undefined : 변수는 존재하나, 어떠한 값으로도 할당되지 않아 자료형이 정해지지 않은 상태.

  • nullpointerexception : RuntimeException. 프로그램에 널값을 가지는 객체 참조를 사용하려고하면 이런 오류가 뜬다. (비어있는 널값은 다른 자료형과 비교할 수 없으니까 나는 오류. )

  • 과제

  1. 이차원 배열 선언.
  2. 입력부
  3. 출력부

이차원배열

int [][] seet = new int [5][3] //: 5개의 열이 있고 3개의 행이 있는 구조. 

int [0][0] = 1;
//seet의 0번째 배열의 0번열에 값 할당. 
double doubleArray[][]={{0.01, 0,02},{0.03, 0.04}} // 배열에 바로 입력하는 형태. 
  • 참고값을 가지고 배열까지 찾아들어가야함.

ArrayList

컬렉션 p.390참고

<> : 제네릭 기법. -> 어레이리스트를 생성하는 순간에 저장할 자료형을 결정하는 기법.
레퍼런스 변수 형태, 객체 형태만을 저장할 수 있다. (기본형 자료형 저장 X)

1. 생성
ArraryList<String> list = new ArrayList<String>();
2. 값 넣기. 
list.add("z")
list.add("a"); 
3. 값 삽임. 순번 지정안하면 순차적으로 들어감. list.add(원하는 순번, 데이터값)
list.add(1,"f"); <-두번째 배열에 f 데이터 값 추가. 
4. 값 가져오기
System.out.println(list.get(0)); <-0번값 가져와서 출력하기. 
5. 값 삭제하기. 
list.remove(0);<-0번값 삭제. 
6. 저장되어있는 데이터의 총 크기 출력
System.our.println(list.size());
7. 전체삭제
list.clear();

Q. 뮤직리스트 생성.

  1. ArrayList 생성
    1. [노래조회] 2. [노래추가] 3. [노래삭제] 4. [종료]
  2. 노래추가 카테고리에서 1.[리스트 마지막에 추가] 2.[바로 다음에 추가]
  3. 노래 추가해보기.
  4. 재생목록 출력
  5. 노래삭제 카테고리에서 1.[선택삭제] 2.[전체삭제]
  6. 종료 시 프로그램을 종료합니다. 출력.
  7. 첫번째 고르기에서 1~4외 다른 번호 누르면 <다시 입력하세요.> 출력
  • 포문 괄호 닫고나서 개행.
    괄호 안닫고 개행하면 개행도 반복이 실행되니까
    한 줄로 이어서 출력되게 하고 싶은 포문 쓴 다음에
    포문 중괄호 닫고 개행 시켜줌.
    !=\n, \t 이랑 사용법이 다름!!
    ex.
int[][] arr = new int[5][5];
int cnt = 21;

for (int j = 4; j >= 0; j--) {
	for (int i = 4; i >= 0; i--) {
		arr[j][i] = cnt;
		cnt++;
  }
}
for (int j = 0; j < 5; j++) {
	for (int i = 0; i < 5; i++) {
		System.out.print(arr[j][i]+"\t");
	}
	System.out.println();
	}
    
 출력결과 => 45  44  43  42  41
            ...(중략)
            25  24  23  22  21
int[][] arr = new int[5][5];
int cnt = 21;

for (int j = 4; j >= 0; j--) {
	for (int i = 4; i >= 0; i--) {
		arr[j][i] = cnt;
		cnt++;
  }
}
for (int j = 0; j < 5; j++) {
	for (int i = 0; i < 5; i++) {
		System.out.print(arr[j][i]+"\t");
	}
  }
  출력결과 => 45  44  43  42  41  39  38  37 ...(중략) 27  26  25  24  23  22  21
  

0개의 댓글