월 14,300원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
퀴즈 3번 질문
제가 수정해서 만든 코드들도 정상적으로 작동하는 데 '나도코딩'님이 예시로 준 코드와 차이점이 뭔가요?제 코드가 메모리를 더 차지해서 이런 방법으로 쓰진 않나요?퀴즈 3번의 예시가 indexOf를 사용할 필요가 없을 정도로 간단해서 쓸 필요가 없는 건가요?public class _Quiz_03 { public static void main(String[] args) { String B01 = "901231-1234569"; //하이픈을 포함한 정수(숫자)들을 문자열로 만들기 위해 변수 String 사용 String B02 = "030708-4567890"; //하이픈을 포함한 정수(숫자)들을 문자열로 만들기 위해 변수 String 사용 // System.out.println("김영희님의 주민번호는 " + B01.substring(B01.indexOf("9"), B01.indexOf("2", 6)) + " 입니다."); System.out.println("김철수님의 주민번호는 " + B02.substring(B02.indexOf("0",0), B02.indexOf( "5", 5)) + " 입니다."); // (내가 처음 만든 방식) 잘 작동은 되지만 코드가 길어서 메모리를 더 잡아 먹는다. //indexOf( "찾을 특정 문자" , "시작할 위치" ) 이런식으로 사용해 주면된다. //"시작할 위치" 같은경우는 생략이 가능하며 생략할 경우 0번째 즉 처음부터 찾기 시작한다. System.out.println(B01.substring(B01.indexOf("9"),B01.indexOf("2", 4))); System.out.println(B02.substring(B02.indexOf("0"), B02.indexOf("5"))); //(수정된 방법) //(나도코딩님 예시) String id = "901231-1234569"; System.out.println(id.substring(0,8)); //0 위칩터 8위치 직전가지 } }
- 해결됨나도코딩의 자바 기본편 - 풀코스 (20시간)
생성자에서 this 이용(Recursive Constructor Invocation)
선생님 안녕하세요.생성자 강의에서 아래 캡처한 부분 설명해주시는 과정에서 기본생성자인 Blackbox()의 중괄호 안에 this("모델명", "해상도", ...) 라고 선생님이 입력하신 내용을 저도 따라 입력해 봤는데요. 제 경우에는 Recursive Constructor Invocation라는 에러 메시지가 뜨는 데 어떻게 해야 문제를 해결할 수 있을까요?
- 해결됨나도코딩의 자바 기본편 - 풀코스 (20시간)
추상클래스 (abstract class)와 인터페이스(interface)의 최적의 쓰임?
안녕하세요 나도코딩 선생님...ㅎ몇 주전에 나도코딩 자바편 강의를 완강하고 다시 2회차로 강의를 듣는 중입니다...ㅎ추상 클래스 (abstract class)와 인터페이스(interface) 관련 강의를 들으면서 각각의 특징들 및 차이점들에 대해서 다시 조금씩 알아가고 있는데... (예를 들면, 추상클래스는 abstract 키워드를 가지고, abstract메소드를 가지고 있어서 객체를 생성할 수 없는 반면, 인터페이스(interface)는 보통 -able 키워드, 변수 X, 생성자 X, 오로지 메소드만 있다 등)이 둘, 그러니까 추상 클래스 (abstract class)와 인터페이스(interface)는 '어느 때 (또는 어느 시점)'에 활용하는게 가장 적절한지 디테일하게 알 수 없을까요?항상 좋은 강의와 답변 감사합니다...ㅎ
- 미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
퀴즈 7번 질문있습니다.
안녕하세요. 선생님 강의 퀴즈 7번을 풀다가 에러가 나서 질문 드립니다.다형성을 이용해서 클래스를 배열에 담는 과정에서 에러가 발생하는데요. 소스코드를 선생님과 동일하게 쳐도 non-static variable this cannot be referenced from a static context 에러가 뜹니다..구글링을 통해 해결해보려고 했으나 각 클래스에 static 을 명시해줘야 한다고 해서 해보니까 스택오버플롤우 에러가 뜨네요 ㅜㅜ
- 미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
void의 사용에 대해
메소드 강의에서 3분 24초 쯤 void를 이용하는데 왜 갑자기 void를 쓰는지에 대한 설명이 없어서 헷갈려서 질문드립니다. 어떨 때 void를 쓰는지 ( 제가 알기론 반환 값이 없을 때 사용 ) 그리고 위의 부분들과 어떠한 점이 달라서 void를 쓰게 되었는지를 잘 모르겠습니다... 객체 듣다가 너무 어려워서 객체 파트만 2번째 듣는데 너무 어렵네요 ㅠㅠ
- 미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
퀴즈1번
String busName = "전주08"; System.out.println( "버스 번호는 " + busName + "입니다."); int leftTime = Integer.parseInt("5"); System.out.println("남은 시간은 " + leftTime + "분 입니다"); double leftDistance = Double.parseDouble("1.5"); System.out.println("남은 거리는 " + leftDistance + "Km 입니다");String busNo = "전주08"int minutes = 5; 이렇게 만드는 거랑 위의 방법으로 만드는 거랑 출력은 같아 보여도 컴퓨터가 인식했을 때 다른가요?
- 미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
블로그에 정리해서 올려도 될까요?
안녕하세요 나도 코딩님 강의 잘 듣고 있고 배운지 꽤 되서 감을 잊고있었는데 되새김질이 되서 좋습니다. 제가 또 잊어버릴까봐 걱정되서 그러는데 혹시 제가 블로그에 정리해도 되나요???퀴즈에 대한 강의는 나도 코딩님의 지적 재산이니 일절 올리지 않을것이고 강의로 인해 배운 지식에 대해서만 올리겠습니다.기본 예시에 대한 문제라면 제가 어레인지해서 올리도록하겠습니다. 허락 부탁드립니다...!!!!
- 미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
Quiz6에 대한 피드백 부탁드립니다(이번 문제는 배열이 아니라 String 클래스라서 "*" 처리하는데 굉장히 애먹었네요 ㅎㅎ;;)
package chap_06; public class _Quiz_06 { public static String getHiddenData(String src, int index) { // 1. substring()을 이용하면 문자열의 일부를 자를 수 있음 // 2. length()를 이용하면 문자열의 길이를 알 수 있음 // 알고리즘: src의 길이를 파악한 후, substring()으로 문자열을 먼저 잘라보자 String temp = src.substring(index); // index부터 슬라이싱 String hiddenStr = temp.replaceAll("[코딩]", "*"); // 나** String hiddenNum = hiddenStr.replaceAll("[0-9]", "*"); // 0~9까지의 모든숫자를 *로 만들겠다 String ori = src.substring(0, index); return ori + hiddenNum; } public static void main(String[] args) { // 1. 개인정보를 비공개로 전환하는 메소드 작성 // 2. 하나의 메소드에서 모든 동작 처리( getHiddenData(name, 1) ) // 3. 각 정보는 아래 위치부터 비공개 적용 String name = "나코딩"; // 이름 String id = "990130-1234567"; // 주민등록번호 String phone = "010-1234-5678"; // 전화번호 System.out.println("이름 : " + getHiddenData(name, 1)); // 개인정보, 비공개 시작 위치 System.out.println("주민등록번호 : " + getHiddenData(id, 8)); System.out.println("전화번호 : " + getHiddenData(phone, 9)); } }추가로, str.replaceAll() 메소드는 oldstring를 []와 같이 정규표현식(regular expression)으로 사용하여, []안에 있는 모든 값을 newstring으로 바꾸겠다는 의미입니다.https://jamesdreaming.tistory.com/85str.replace()는 예를 들어, str.replace("코딩, "*")을 하면 나*만 나오는데 비해, str.replaceAll("[코딩]", "*")을 하면 나**로 나오는 것으로 보아, 정규식에 포함하는 리터럴 상수를 하나씩 *로 바꿔주는 것 같습니다.
- 미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
2가지 이상 자료형을 가지는 변수는 받을 수 없나요?
2가지 이상 자료형을 가지는 변수는 받을 수 없나요?String | int 이렇게 두가지를 같이 선언 불가한가요?
- 미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
int size = 120;
int size = 120;size = size + 10; System.out.println(size)int는 자료형의 변수 size와 아래 코드에 있는 size는 다른 건가요? size라는 덩어리에 값을 담는 다는 건 알고 있습니다.
- 미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
String, int 가 터미널에는 똑같은 모양으로 출력되는데, int 타입은 색상을 변경해서 출력하는게 가능한가요?
String, int 가 터미널에는 똑같은 모양으로 출력되는데, int 타입은 색상을 변경해서 출력하는게 가능한가요?터미널만 봐서는 무슨 타입인지 알 수 없습니다.
- 미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
다차원 배열 순회부분
안녕하세요!! 좋은 강의 듣게 해주셔서 감사합니다 !!복습 중 이해가 안되는 부분이 있어 질문합니다!!//세로크기 10 가로크기 15에 해당하는 영화관 좌석 //세로크기 10 가로크기 15에 해당하는 영화관 좌석 String[][] seats3 = new String[10][15]; // 선언만 할 때에는 크기를 명시 String[] eng = {"A","B","C","D","E","F","G","H","I","J"}; for (int i = 0; i < seats3.length ; i++) { // 세로 for (int j = 0; j < seats3[i].length; j++) { seats3[i][j] = eng[i]+(j+1); System.out.print(seats3[i][j] + " "); } System.out.println(); } // 표 구매 seats3 [7][8] = "__"; // H9 seats3 [7][9] = "___"; // H10 // 영화관 좌석 확인 for (int i = 0; i < seats3.length ; i++) { // 세로 for (int j = 0; j < seats3[i].length; j++) { // 가로 System.out.print(seats3[i][j] + " "); // A1,A2,A3... } System.out.println(); }//영화관 좌석 확인 부분에서 String[][] seats3 = new String[10][15]; String[] eng = {"A","B","C","D","E","F","G","H","I","J"}; for (int i = 0; i < seats3.length ; i++) { // 세로 for (int j = 0; j < seats3[i].length; j++) { seats3[i][j] = eng[i]+(j+1); System.out.println(seats3[i][j] + " "); } }위 코드 fori 구문을 두번 반복한 뒤 System.out.print(seats3[i][j] + " "); 을 사용해나타내었는데, 이러지 않고 밑에 코드 블럭 처럼<바로 sout을 통해 좌석번호를 나타낸다면 틀린 코드인지 궁금합니다. ...>제가 해보았을 때 같은결과가 나와서...String[][] seats3 = new String[10][15]; // 선언만 할 때에는 크기를 명시 String[] eng = {"A","B","C","D","E","F","G","H","I","J"}; for (int i = 0; i < seats3.length ; i++) { // 세로 for (int j = 0; j < seats3[i].length; j++) { seats3[i][j] = eng[i]+(j+1); System.out.print(seats3[i][j] + " "); } System.out.println(); } 요러케요!!
- 해결됨나도코딩의 자바 기본편 - 풀코스 (20시간)
다차원 배열순회 (후반전) ,seats[i][j] = eng[i]+(j+1);
//세로 크기 10 x 가로 크기 15에 해당하는 영화관 좌석 정보String[][] seats3 = new String[10][15]; //선언만 할때에는 크기를 명시해주자String[] eng = {"A","B","C","D","E","F","G","H","I","J"};for(int i=0;i<seats3.length;i++) {for(int j=0;j<seats3[i].length;j++) {seats[i][j] = eng[i]+(j+1); 선생님 eng[i][j+1] 이 아닌지 궁금합니다. ㅠㅠ System.out.println(seats);}}
- 해결됨나도코딩의 자바 기본편 - 풀코스 (20시간)
안녕하세요. 배열 강의 부분에서 공부를 하면서 "값 변경"에 대해 드릴 말씀이 있습니다.
얕은 지식을 가진 제가 감히 강사님께 수정을 요청드려도 될 지 모르겠지만, coffees[2] = "에스프레소"; // 값 변경 에서 많은 학습하는 사람들이 주석에 쓰인 "값 변경"을 C나 C++에서 쓰인 value로 해석할 여지가 있으실 것 같아서 이것을 "참조값 변경"으로 수정해주시면 감사드리겠습니다. 왜냐하면 Java는 미리 public class로 선언한 부분에서 String class를 coffees로 객체명을 지어서 객체를 생성할 수 있고, 우측의 {"아메리카노", "카페모카", "라떼", "카푸치노"}; 인 참조 객체를 객체 변수에 할당하는 것이기 때문입니다.저는 강사님의 넓고 깊은 지식을 강의를 들을 때마다 매번 감탄하면서 배우는 입장인데, 제가 주제넘었다면, 이 글은 바로 삭제하겠습니다. 항상 퀄리티 높은 강의를 제공해주셔서 감사합니다 😄
- 미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
new FileWriter() 랑 new File() 차이점이 뭔가요?
앞에 파일 다루기 강의에서는 파일 생성할때new File() 로 파일을 만들었는데이번 강의에서는 new FileWriter() 로 파일을 만드는 이유가 뭘까요?
- 미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
쓰레드 클래스 질문이요
앞에 Thread강의에서는 객체생성하고 start() 함수만 써서 실행했는데이번 강의는 cleanRunnable.start() 안쓰고Thread 객체를 추가로 사용하셨는데 이 쓰레드 객체가 왜 쓰였는지 궁금합니다
- 해결됨나도코딩의 자바 기본편 - 풀코스 (20시간)
Quiz 4에서 강사님이 작성하신 if문과 달리 case문으로 작성해보았는데 피드백 부탁드립니다.
package chap_04; public class _Quiz_04 { public static void main(String[] args) { int car = 3; int fee = 0; // 시간당 4000원이므로 초기값을 0으로 저장하자 int max = 30000; // 케이스가 명확하므로 switch문을 작성하는게 맞는데, 시간을 어떻게 반복? switch (car) { case 1: // 일반 차량의 경우 for (int i = 1; i <= 5; i++) { fee += 4000; // 팩토리얼 계산을 때려버림.... } System.out.println("주차 요금은 " + fee + " 원입니다."); break; case 2: for (int i = 1; i <= 5; i++) { fee += 4000; } fee /= 2; // 최종 요금에서 50% 할인 System.out.println("주차 요금은 " + fee + " 원입니다."); break; case 3: for (int i = 1; i <= 10; i++) { fee += 4000; if(fee > max) // fee가 최대 요금을 넘어가면 fee = max; // 최대 요금을 fee로 고정 } fee /= 2; // 최종 요금에서 50% 할인 System.out.println("주차 요금은 " + fee + " 원입니다."); } } } // 일반 차량일 경우 // 경차일 경우 // 장애인 차량일 경우저같은 경우, 케이스가 일반 차량, 경차, 장애인 차량으로 명확해서 case문으로 작성하였고, 시간당 4000원이라고 하여서 fee = 0 으로 먼저 초기화한 다음, 시간을 for문으로 돌려서 계산을 하였는데요. 이렇게 switch-case문 안에 for문을 작성해도 괜찮나요??
- 미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
특수문자
char 타입에서 특수문자에 관하여 질문을 드립니다.char a = 'A';a = '\'A\''; 에러가 뜨는데 어떻게 수정을 해야할까요??
- 미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
Intelli J 사용관련
안녕하세요. _Quiz_07.java를 만들어 Run시키면 Chapter 9의 Inteface관련 Package쪽 에러가 있다고 합니다. Run Configuration에 Quiz07.java를 지정해도 동일한 에러가 반복됩니다. 마치 Intelli J는 프로젝트 전체를 Build하면서 특정 부분에 에러가 있으면 Run이 안되는 것 같습니다. 어떻게 해결할 수 있을까요?이 외에도 Intelli J를 잘 활용하고 싶은데, 좋은 방법 있으면 추천 부탁 드립니다.
- 해결됨나도코딩의 자바 기본편 - 풀코스 (20시간)
ArrayList, LinkedList, HashMap 등 및 이들의 메소드들 add(), set() 등에 대해 깊이있게 알고싶습니다...ㅎ
안녕하세요, 나도코딩 선생님...ㅎ 어제 나도코딩 자바편에서 남은 나머지 강의인 Thread 부분과 섹션 10. 제네릭스 (Java Collections Framework)를 다 듣고 완강한 다음 복습 중에 궁금증이 생겨 이렇게 질문을 남깁니다. 나도코딩 파이썬 강의를 완강한 이후로 또 다른 강의를 다 끝내고 나니 기분이 매우 좋습니다 ㅎㅎ(1) 우선 add와 set과 관련된 질문입니다. Java documentation을 보면서 java.util.List에서 add는 object를 추가하는 것 외에도, add(int index, object e)를 통해 특정 위치(index)에 특정 객체(object)를 넣기도 가능하고, set도 마찬가지로 set(int index, object e) 형태로 같은 역할을 수행하는데, add와 set를 따로 나눈 것은 add는 단순하게 리스트 안에 객체를 넣는 것이 초점인 반면, set는 리스트 안에 들어있는 '기존 데이터들이 가진 순서 변경의 목적'이라서 그런건가요?(2) 지금까지 제네릭스를 공부하고 제가 이해한 바로는 LinkedList랑 ArrayList 두 가지 리스트 모두 데이터 순서를 가지고, ArrayList는 데이터를 쓰고 저장하는 것은 알고리즘 시간 복잡도상 O(n)이기 때문에 속도가 느리지만, 읽기(O(1))는 빠른 반면, LinkedList는 데이터를 읽는 속도(O(n))는 느리지만, 리스트 중간에 데이터를 쓰고 저장하는 것(O(1))은 빠르다면, 이 둘의 특성들을 어느 때 쓰는 것이 가장 적합한가요?또한 ArrayList와 LinkedList를 각각 '메모가 많은 공책', 예전에 있었던 '포털 사이트 실시간 검색어 순위'로 비유해서 개념을 이해하는 것도 괜찮을까요? - 제 스스로 이해를 돕기위해 나름 저만의 비유를 적어봤습니다...ㅎ메모가 많은 공책 (ArrayList) : 책 한 장안에 많은 메모들을 볼 수 있어서 읽기는 빠르지만, 메모를 쓰려면 최소 6-7장은 넘겨야 한다.실시간 검색어 순위 (LinkedList) : 순위가 주기적으로 (주로 1시간 단위) 변해서 자료들을 빨리 반영하기는 힘들지만, 실시간 순위인 만큼 빠른 자료 수집 및 추가는 확실하다.(3) HashMap도 또한 일반적으로 어디에 가장 적합 한가요? 이를 테면 제가 원하는 특정 문자에, 특정 정수(Integer) 값을 할당하는 용도로 HashMap을 써도 괜찮을까요? 혹시 몰라 아래처럼 제 나름대로 코드를 적어봤습니다...ㅎ... // 이미 import java.util.Map; 되어있음. HashMap<String, Integer> gameMoves = new HashMap<>(); gameMoves.put("R", 0); // gameMoves.remove("R"); 이렇게 키도 삭제 가능 gameMoves.put("D", 1); gameMoves.put("L", 2); gameMoves.put("U", 3); System.out.println(gameMoves.size()); // 4그리고 위의 예시 처럼 remove("R");을 통해 키 값을 없애면 (HashMap gameMoves에 저장된 String), HashMap gameMoves의 value값은 그대로 살아있는가요? 아니면 null로 처리가 되나요? 스스로 공부하면서 얼핏 본 바로는 key값이 사라지더라도 map의 value는 계속해서 쓸 수 있다고 본거 같은데, 이 부분도 확실하게 제 스스로 짚고 넘어가고 싶습니다! 추가적으로 강의를 들으면서 제네릭스 전반적인 개념을 제 나름대로 그림도 그려가면서 이해를 해봤습니다...ㅎ 제대로 이해했는지 알고 싶어서요...ㅎ 앞으로도 강의 많이 찍어주세요!...ㅎ 항상 감사합니다!