자바텍스트

이동원·2024년 3월 19일

자바텍스트 게시판을 만들기 위한 프로젝트 생성과 세팅

  • new project ->gradle 선택->groovy 선택
  • 우측하단에 프로그래스가 뭐진행되는데 그거 잘못만지면 인텔리제이가 안된다.
    만약에 뭘 건들어서 인텔리제이가 안될때 file->inavalidate caches->모두체크->restart
    ->우측하단에 프로그래스 다진행되고 시작하자
  • 실행을해보면 이상한게 많이 출력되는데 setting ->build tool->gradle>intelij로 2개다 바꿔줌
  • gradle을 쓰면코드를 작성하고 이게 최종프로그램이 나오기까지 여러단계를 거침(컴파일 , test , 라이브러리 추가 하거나빼는)
    ->사람이 일일히 하기 힘드니 gradle이라는 build(코드작성 순간 부터 프로그램이 나오는 과정) 도구를 쓰게됌
  • gitgub에 자바 텍스트 게시판을 위한 새로운 래파지토리생성
    원격저장소 로컬에 등록
    git remote add origin https://github.com/leedongwon6862/java-text-borad.git
    git remote add -v (잘등록됬나확인)
    git add .
    git commit -m "project init"
    git push origin main
    원격레파지토리 와 로컬 레파지토리에 연결됌
    cf) 프로젝트 전체를 git 저장해야함

명령어를 이용해 게시물 추가하는 기능만들기

<문제3>
기능1 : 종료

  1. 기능1 : 종료
  • 명령어 : exit
  • 설명 : 루프 종료.
  • 입력출 예시
      명령어 : exit[입력]
      프로그램을 종료합니다.

<문제2>
기능2 : 게시물 추가

  • 명령어 : add
  • 설명 : 게시물은 제목, 내용으로 이루어져 있습니다. 제목과 내용을 입력받아 저장
  • 입출력 예시
      명령어 : add
      게시물 제목을 입력해주세요 : 제목1
      게시물 내용을 입력해주세요 : 내용1
      게시물이 등록되었습니다.
      명령어 : add
      게시물 제목을 입력해주세요 : 제목2
      게시물 내용을 입력해주세요 : 내용2
      게시물이 등록되었습니다.
    <문제3>
    기능3 : 게시물 조회
  • 명령어 : list
  • 설명 : add로 저장된 게시물의 목록이 나온다.
  • 입출력 예시
    명령어 : list
    ==================
    제목 : 제목1 
    내용 : 내용1 
    ==================
    제목 : 제목2 
    내용 : 내용2 
    ==================
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        // 반복 횟수 정할 수 없음 => 무한 반복 구조

        // 변수에는 하나의 값만 저장 가능하므로 여러개의 게시물을 저장하려면 ArrayList(배열)를 사용한다.
        ArrayList<String> titleList = new ArrayList<>();
        ArrayList<String> bodyList = new ArrayList<>();

//        String title = ""; // 딱히 처음에 값이 필요 없음. 추후에 입력을 통해 넣을 것임. , 바로 빼올거 아니므로 while문 밖에다 빼놓기
//        String body = "";

        while(true) { // 반복 조건이 true이기 때문에 무한 반복

            System.out.print("명령어 : ");
            String cmd = scan.nextLine();

            if(cmd.equals("exit") ) { // 숫자가 아닌 경우 같다라는 표현을 할 때 == 이 아닌 .equals()를 사용해야 한다.
                System.out.println("프로그램을 종료합니다.");
                break; // 반복문 탈출
            }
        }

        // 1. 반복문 제어 하던 방법 : 반복 횟수 세서 특정 횟수 지나면 탈출
        // 2. break문을 사용하여 강제 탈출 가능
            } else if(cmd.equals("add")) {
                System.out.print("게시물 제목을 입력해주세요 : ");
                String title = scan.nextLine();
                titleList.add(title); // titleList 배열에 title을 추가

//        for(int i = 1; i <= 10; i++) {
//            if(i == 5) {
//                break; // i가 5일 때 반복문 탈출
//            }
//            System.out.println(i);
//        }
                System.out.print("게시물 내용을 입력해주세요 : ");
                String body = scan.nextLine();
                bodyList.add(body);

                System.out.println("게시물이 등록되었습니다.");

            } else if(cmd.equals("list")) {
                System.out.println("===================");
                for(int i = 0; i < titleList.size(); i++) {
                    String title = titleList.get(i);
                    System.out.printf("제목 : %s\n", title);

//%s를 사용하면 문자열이 들어 있는 변수나 문자열 리터럴이 해당 위치에 삽입됩니다.
                    String body = bodyList.get(i);
                    System.out.printf("내용 : %s\n", body);
                    System.out.println("===================");
                }

            }


        }
    }
}

cf)

  • %s를 사용하면 문자열이 들어 있는 변수나 문자열 리터럴이 해당 위치에 삽입됩니다.
  • a지역과 b지역에 동시에 사용하고싶으면 a ,b 둘다 속하면안되고 상위지역으로
    즉 a지역변수를 b지역에 사용하고싶으면 안된다 -> while 에다하면 위로다시돌아오므로 뭐를 저장하던간에 다시 그위값으로 세팅되므로 while 밖에다가하기
  • 이미 있는걸 가져다쓸때는 type을 적지않는다.
  • 추가할떈 add , 꺼내서 사용할땐 get
  • printf 가뭘까 ??
    int number = 10;
    double amount = 20.5;
    String name = "John";

System.out.printf("Number: %d, Amount: %.2f, Name: %s", number, amount, name);
위의 코드에서 %d, %.2f, %s는 각각 정수, 소수점을 가진 부동 소수점 수, 문자열을 나타냅니다. 이렇게 함으로써 해당 위치에 변수의 값을 삽입하여 형식화된 출력을 얻을 수 있습니다.

0개의 댓글