9:10 경 학원 도착.
도착해서 같이 듣는 수강생들하고 깃 배쉬로 리포지토리 만드는거 헤매봄.
<9:30 1교시>
선생님이 만든 깃허브의 공동 작업자로 들어가보기
우리 컴퓨터에서 클론하면 선생님 깃허브 작업이 origin으로 우리에게 등록될 것...이라고 한 것 같음
로컬에서 처음 저장소에 올릴 때, 로컬에서 먼저 커밋을 한 상태라면 저장소는 무조건 비어있어야 한다.
만약 저장소에서 readme 같은 것을 만든 상태라면 그게 커밋으로 적용되기 때문에 로컬에 readme를 추가한 다음 진행해야 하는 상황이다
는 메모할 새도 없이 열심히 한 결과 어째어째 했다.
remotes/origin/master origin이라는 원격 저장소의 master 브랜치의 이력.
<10:30 2교시>
git merge origin/master
fork
pull request와 social coding
협업자로 등록해주세요 -> 보통 협업 요청 허락 안해줌 -> fork로 가져와서 바꾸고 보내주면 기여 가능 (한명이 검토하고 merge가 가능해짐)
일단 어케어케 했는데 모르겠다, 나중에 다시 또 기회가 있겠지
어제 하던거 코드 완성
package test.main;
import java.util.ArrayList;
import java.util.List;
import test.mypac.PostDto;
public class MainClass14 {
public static void main(String[] args) {
/*
* 1. test.mypac.PostDto 클래스를 만들어 보세요
* PostDto 에는 글번호, 작성자, 제목을 담을수 있어야 합니다.
* 즉 3개의 필드를 만드세요
* 필드명은 마음데로, 필드의 data type 은 잘 생각해서 결정
* dto 작성 규약에 맞게 만들어 주세요( eclipse generate 기능 활용)
* test.mypac 페키지에 만들기
*
* 2. PostDto 객체에 임의의 글 3개의 정보를 담아 보세요.
* 총 3개의 PostDto 객체가 생성이 되어야 합니다.
*
* 3. PostDto 객체를 담을수 있는 ArrayList 객체를 생성해서 위에서 생성한 PostDto
* 객체를 ArrayList 에 담아 보세요.
*
* 4. 반복문 돌면서 ArrayList 에 담긴 글 목록을 콘솔창에 이쁘게 출력해 보세요.
*
*/
PostDto post1 = new PostDto();
post1.setNum(1);
post1.setTitle("제목1");
post1.setWriter("작가1");
PostDto post2 = new PostDto(2, "제목2", "작가2");
PostDto post3 = new PostDto(3, "제목3", "작가3");
List<PostDto> dtos = new ArrayList<>();
dtos.add(post1);
dtos.add(post2);
dtos.add(post3);
for(PostDto tmp : dtos) {
String info = String.format("글번호:%d, 작성자:%s, 제목:%s", tmp.getNum(), tmp.getWriter(), tmp.getTitle());
System.out.println(info);
}
}
}
Exception의 처리 : 코드 실행하다가 발생하는 예외를 처리할 방법들을 3교시부터 배움
현금인출기에서 돈을 인출하는데 갑자기 정전이라는 예외가 일어났을 때, 돈은 인출됐는데 계좌 잔액이 그대로면 매우 좋겠지만 안되잖아
예외가 발생했음에도 그 밑에 부분을 실행할 수 있게 해주는 방법 try ~ catch
<11:30 3교시>
try 블럭에서 NumberFormatException 타입의 예외가 발생하면 catch 안의 내용으로 건너뛰어 실행한다.
자바에서 발생하는 모든 예외는 Exception을 상속받고, RuntimeException은 그 중 하나일 뿐 다른 Exception도 있음.
RuntimeException은 실행 시에 발생하는 예외에 대한 처리를 함.
Compile 시에 발생하는 Exception은 RuntimeException을 상속받지 않음
예외가 발생하면 보통 처리 할지말지를 컴퓨터가 알아서 해주는데, 반드시 try catch로 Exception 처리 해야 하는 경우가 있고, 이들은 RuntimeException을 상속받지 않는다.
package test.main;
import java.util.Scanner;
public class MainClass02 {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("나눌 수 입력:");
String inputNum1=scan.nextLine();
System.out.println("나누어지는 수 입력");
String inputNum2=scan.nextLine();
try {
//문자열 형태의 숫자를 실제 정수로 변경하기
int num1=Integer.parseInt(inputNum1);
int num2=Integer.parseInt(inputNum2);
//계산하기
int result = num2/num1;//몫
int result2= num2%num1;//나머지
System.out.println(num2+"를 "+num1+"으로 나눈 몫 : "+result);
System.out.println(num2+"를 "+num1+"으로 나눈 나머지 : "+result2);
}catch(NumberFormatException nfe) {
//예외 객체에 담긴 메세지
System.out.println(nfe.getMessage());
System.out.println("숫자를 눌러주세요");
}catch(ArithmeticException ae) {
System.out.println(ae.getMessage());
System.out.println("나눌 수는 0이어선 안됩니다");
}
System.out.println("main 메소드가 정상 종료됩니다");
}
}
package test.main;
import java.util.Scanner;
public class MainClass03 {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("나눌 수 입력:");
String inputNum1=scan.nextLine();
System.out.println("나누어지는 수 입력");
String inputNum2=scan.nextLine();
try {
//문자열 형태의 숫자를 실제 정수로 변경하기
int num1=Integer.parseInt(inputNum1);
int num2=Integer.parseInt(inputNum2);
//계산하기
int result = num2/num1;//몫
int result2= num2%num1;//나머지
System.out.println(num2+"를 "+num1+"으로 나눈 몫 : "+result);
System.out.println(num2+"를 "+num1+"으로 나눈 나머지 : "+result2);
}catch(Exception e) {
//Exception은 모든 예외의 부모 type이기 때문에 어떤 예외가 발생해도 이부분이 실행된다
System.out.println("예외가 발생했습니다.");
System.out.println("예외 메세지: "+e.getMessage());
}finally {
//예외 발생 유무와 관계 없이 무조건 실행되는 부부분
//이곳은 예외가 발생하건 안하건 반드시 실행이 보장되는 부분으로, 중요한 마무리 작업을 주로 여기서 수행한다.
System.out.println("중요한 마무리 작업을 하는 중입니다.");
}
System.out.println("main 메소드가 정상 종료됩니다");
}
}
부모 클래스에 RuntimeException이 없는 Exception은 반드시 예외 처리를 해줘야 한다.
package test.main;
public class MainClass04 {
public static void main(String[] args) throws InterruptedException {
System.out.println("메인메소드가 시작되었습니다");
Thread.sleep(1000*5);//스레드(실행의 흐름)를 일정시간 지연 시키기(mili second 단위로 숫자를 전달하면 됨)
System.out.println("메인메소드가 종료되었습니다.");
}
}
package test.main;
public class MainClass05 {
public static void main(String[] args) {
System.out.println("메인메소드가 시작되었습니다");
try {
Thread.sleep(1000*5);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}//스레드(실행의 흐름)를 일정시간 지연 시키기(mili second 단위로 숫자를 전달하면 됨)
System.out.println("메인메소드가 종료되었습니다.");
}
}
package test.mypac;
public class MyUtil {
//5초가 걸리는 가상의 그림을 그리는 메소드
public static void draw() {
try {
Thread.sleep(5000);
}catch(InterruptedException e){
e.printStackTrace();
}
System.out.println("그림 완성");
}
//5초가 걸리는 가상의 전송을 하는 메소드
public static void send() throws InterruptedException {
System.out.println("5초 동안 전송해요..");
Thread.sleep(5000);
System.out.println("전송완료");
}
}
package test.main;
import test.mypac.MyUtil;
public class MainClass06 {
public static void main(String[] args) {
MyUtil.draw();
try{MyUtil.send();}
catch(InterruptedException e) {e.printStackTrace();}
}
}
<12:30 4교시>
와....3교시 막판에 겁나 졸렸다... 배고파서 그랬나 흑 ㅠ
4교시 예제 풀어봄
처음에 삽질한거 Thread.sleep(1000*i)라고 했다던가 Thread.sleep(10000)이라고 하고 출력했다든가.
그래서 출력이 되는데 1초의 1초 뒤에 2초, 2초의 2초 뒤에 3초, 3초의 3초 뒤에 4초... 이런 식으로 계속 지연되면서 출력됐었음.
package test.main;
public class QuizMain {
/*
* run 했을 때 콘솔창에 1,2,3... 경과시간을 출력하다가 종료되는 코드
* hint = >Thread.sleep(1000);
*/
public static void main(String[] args) throws InterruptedException {
for(int i=0; i<10; i++) {
int second = i+1;
Thread.sleep(1000);
System.out.println(second+"초");
}
Thread.sleep(1000);
System.out.println("10초가 지났습니다. 종료되었습니다");
}
}
'공부의 기록 > 자바 풀 스택 : 수업내용정리' 카테고리의 다른 글
자바 풀 스택 12/26 오전 기록 025-1 (0) | 2024.12.26 |
---|---|
자바 풀 스택 12/24 오후 기록 024-2 (0) | 2024.12.24 |
자바 풀 스택 12/23 오후 기록 023-2 (0) | 2024.12.23 |
자바 풀 스택 12/23 오전 기록 023-1 (0) | 2024.12.23 |
자바 풀 스택 12/20 오후 기록 022-2 (1) | 2024.12.20 |