。゚(*´□`)゚。

코딩의 즐거움과 도전, 그리고 일상의 소소한 순간들이 어우러진 블로그

[네이버클라우드] 클라우드 기반의 개발자 과정 7기/웹프로그래밍

[NC7기-30일차(6월7일)] - 웹프로그래밍 11일차

quarrrter 2023. 6. 7. 20:39

1교시 애플 고글

 

2교시

주석 막고 단순 입력 

if문, 메서드 정의

  if (menuNo.equals("6")) {
        break;
      }
      
      문자열이랑 숫자랑 == 사용할 수 없음.
      .equals() 사용해서 입력값 비교

3교시

java.lang.(패키지에 소속된 클래스를 사용할 땐 굳이 import 안 해도 됨)

Integer.parseInt() => 숫자로 된 문자열을 정수값으로 변환

    for (int i = 0; i < length; i++) {
      if (no[i] == Integer.parseInt(memberNo)) {
        // i번째 항목에 저장된 회원정보 출력
        return;
      }
    }

삼항연산자

//삼항연산자
int b = (5 < 4) ? 50 : 40; 
System.out.println(b); //결과 = 40
      if (no[i] == Integer.parseInt(memberNo)) {
        System.out.printf("이름: %s\n", name[i]);
        System.out.printf("이메일: %s\n", email[i]);
        System.out.printf("성별: %s\n", gender[i] == 'M' ? "남성" : "여성");
        return;
      }

4교시

  public static String toGenderString(char gender) {
    return gender == 'M' ? "남성" : "여성";
  }

  public static void printGender(char gender) {
    System.out.printf("성별: %s\n", gender == 'M' ? "남성" : "여성");
  }

함수 그만하고 싶으면 return; 하면 됨

  public static void inputMember() {
    if (!available()) {
      System.out.println("더 이상 입력할 수 없습니다!");
      return;
    }

public, private(기본은 감추기. 보수적으로)

  private static boolean available() {
    return length < MAX_SIZE;
  } // 외부에서 import 하지 않는 메서드이기 때문에 public 취소하기,
  private 붙이면 이 클래스 안에서만 쓸 수 있음

 

오후수업 

1교시 2교시

        name[i] = Prompt.inputString("");

  public static void updateMember() {
    String memberNo = Prompt.inputString("수정할 번호? ");
    for (int i = 0; i < length; i++) {
      if (no[i] == Integer.parseInt(memberNo)) {
        System.out.printf("이름(%s)? >", name[i]);
        name[i] = Prompt.inputString("");
        System.out.printf("이메일(%s)? >", email[i]);
        email[i] = Prompt.inputString("");
        System.out.printf("비밀번호(%s)? >", password[i]);
        password[i] = Prompt.inputString("");
        System.out.printf("성별(%s): \n", toGenderString(gender[i]));

        loop: while (true) {
          String menuNo = Prompt.inputString("성별:\n " +
              " 1. 남자\n " +
              " 2. 여자\n " +
              " >");

          switch (menuNo) {
            case "1":
              gender[i] = MALE;
              break loop;
            case "2":
              gender[i] = FEMALE;
              break loop;
            default:
              System.out.println("무효한 번호 입니다");
          }
        }
        return;
      }
    }
    System.out.println("해당 번호의 회원이 없습니다.");
  }

2교시

static 안 붙은 매서드는 (non static = instatnt 메서드) static 메서드를 불러 올 수 없다.

 

3교시

입력정보 삭제하기

 

빈값으로 만들기	
    no[length - 1] = 0;
    name[length - 1] = null;
    email[length - 1] = null;
    password[length - 1] = null;
    gender[length - 1] = (char) 0;
package bitcamp.personalapp.handler;

import bitcamp.util.Prompt;

public class DiaryHandler {

    static final int MAX_SIZE = 100;
    static int[] no = new int[MAX_SIZE];
    static String[] date = new String[MAX_SIZE];
    static String[] title = new String[MAX_SIZE];
    static String[] weather = new String[MAX_SIZE];
    static String[] contents = new String[MAX_SIZE];
    static char[] coffee = new char[MAX_SIZE];
    static int turn = 1;
    static int length = 0;
  
    static final char DRINK = 'O';
    static final char NONCOFFEE = 'X';

    public static void inputContents() {
      if (!available()) {
        System.out.println("더 이상 입력할 수 없습니다!");
        return;
      }

      date[length] = Prompt.inputString("날짜 ?");
      weather[length] = Prompt.inputString("날씨 ?");
      title[length] = Prompt.inputString("제목 ?");
      contents[length] = Prompt.inputString("내용 ?");
      coffee[length] = inputCoffee((char) 0);

      no[length] = turn++;
      length++;
    }

    public static String toCoffeeString(char coffee) {
      return coffee == 'O' ? "마심" : "안 마심";
    }

    private static char inputCoffee(char coffee) {
      String label;
      if (coffee == 0) {
        label = "모닝커피? \n";
      } else {
        label = String.format("모닝커피(%s)?\n", toCoffeeString(coffee));
      }

      loop: while (true) {
        String select = Prompt.inputString(label +
        " 1. 마심\n"+
        " 2. 안 마심\n"+
        "> ");
      
        switch (select) {
            case "1":
                return DRINK;
            case "2":
                return NONCOFFEE;
            default:
                System.out.println("1, 2 中 선택");
            }
          }
    }
    public static void printDiary(){
      System.out.println("--------------------------------------------");
      System.out.println("번호, 날짜, 날씨, 제목, 내용, 모닝커피 유무");      
      System.out.println("--------------------------------------------");

      for (int i = 0; i < length; i++) {
        System.out.printf("%d, %s, %s, %s, %s, %c\n", no[i], date[i], weather[i], title[i], contents[i], coffee[i]);
      }
    }  
    public static void viewDiary() {
      String diaryNo = Prompt.inputString("일기번호? ");
      for (int i = 0; i < length; i++) {
        if (no[i] == Integer.parseInt(diaryNo)) {
          System.out.printf("날짜 : %s \n", date[i]);
          System.out.printf("날씨 : %s \n", weather[i]);
          System.out.printf("제목 : %s \n", title[i]);
          System.out.printf("내용 : %s \n", contents[i]);
          System.out.printf("모닝커피 : %s \n", toCoffeeString(coffee[i]));
          return;
        }
      }
      System.out.println("해당 번호의 일기가 없습니다.");
    }

    public static void updateDiary(){
      String diaryNo = Prompt.inputString("수정할 일기 번호? ");
      for (int i = 0; i < length; i++){
        if (no[i] == Integer.parseInt(diaryNo)) {
          System.out.printf("날짜(%s)? >", date[i]);
          date[i] = Prompt.inputString("");
          System.out.printf("날씨(%s)? >", weather[i]);
          weather[i] = Prompt.inputString("");
          System.out.printf("제목(%s)? >", title[i]);
          title[i] = Prompt.inputString("");
          System.out.printf("내용(%s)? >", contents[i]);
          contents[i] = Prompt.inputString("");
          coffee[i] = inputCoffee(coffee[i]);
          return;
        }
      }
      System.out.println("해당 번호의 일기가 없습니다. ");
    }

    public static void deleteDiary(){
      int diaryNo = Prompt.inputInt("삭제할 번호?") ;

      int deletedDiary = indexOf(diaryNo);
      if (deletedDiary == -1) {
        System.out.println("무효한 번호입니다.");
        return;
      }

      for (int i = deletedDiary; i < length -1; i++) {
        no[i] = no[i + 1];
        date[i] = date[i + 1];
        weather[i] = weather[i + 1];
        title[i] = title[i + 1];
        contents[i] = contents[i + 1];
        coffee[i] = coffee[i + 1];
      }

      no[length -1] = 0;
      date[length -1] = null;
      weather[length -1] = null;
      title[length -1] = null;
      contents[length -1] = null;
      coffee[length -1] = (char) 0;

      length--;
    }


    private static int indexOf(int diaryNo) {
      for (int i = 0; i < length; i++){
        if (no[i] == diaryNo){
          return i;
        }
      }
      return -1;
    }

    public static boolean available() {
      return length < MAX_SIZE;
  }
  }
package bitcamp.util;

import java.util.Scanner;

public class Prompt {

    static Scanner scanner = new Scanner(System.in);

    public static String inputString(String title) {
        System.out.print(title);
        return scanner.nextLine();
    }

    public static int inputInt(String title) {
      return Integer.parseInt(inputString(title));
    }

    public static void close() {
        scanner.close();
    }
}
package bitcamp.personalapp;

import bitcamp.util.Prompt;
import bitcamp.personalapp.handler.DiaryHandler;

public class App {

  public static void main(String[]args){
    
    printTitle();
    printMenu();

    while (true) {
      String menuNo = Prompt.inputString("메인> ");
      if (menuNo.equals("6")){
        break;
      } else if(menuNo.equals("menu")) {
        printMenu();
      } else if(menuNo.equals("1")){
        DiaryHandler.inputContents();
      } else if(menuNo.equals("2")){
        DiaryHandler.printDiary();
      } else if(menuNo.equals("3")){
        DiaryHandler.viewDiary();
      } else if(menuNo.equals("4")){
        DiaryHandler.updateDiary();
      } else if(menuNo.equals("5")){
          DiaryHandler.deleteDiary();
      } else {
        System.out.println(menuNo);
      }
    }


    Prompt.close();
  }

  static void printTitle() {
    System.out.println("나의 개발자 도전기");
    System.out.println("-------------------------");   
  }

  static void printMenu() {
    System.out.println("1. 일기 등록 ");
    System.out.println("2. 일기 목록 ");
    System.out.println("3. 일기 조회 ");
    System.out.println("4. 일기 변경 ");
    System.out.println("5. 일기 삭제 ");
    System.out.println("6. 종료 ");
  }

 
  static boolean promptContinue() {
    String response = Prompt.inputString("계속 입력하시겠습니까?(Y/n) ");
    if (!response.equals("") && !response.equalsIgnoreCase("Y")){
        return false;
      }
    return true;
    }
  }