묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
오라클 jdk 21
최근에 intellij를 맞게 다운받아서 사용하였는데 학습 초반부 오라클jdk 21 이 버전이 없어서 22 버전으로 하는데 올려주신 학습자료내 소스코드를 압축풀고 적용하는데에 문제가있어 수업진행이 어렵습니다
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
문제와풀이3 강의중 inputmismatchexception 예외처리 하는 방법이 궁금합니다
[질문 내용]섹션9 배열 문제와풀이3 강의 10:41초부터선생님께서 사용자가 메뉴를 잘못칠 수 있는 경우에 처리방법을 else문으로 알려주셨는데요! 만약 사용자가 아래처럼 숫자가 아닌 문자를 입력하면 어떻게 처리를 해야하는지 궁금하였습니다. 입력값을 문자로 하였을때 나오는 inputmismatchexception 에러검색을 하다가 try catch문을 알게되었습니다제가 원하는 방향은 사용자가 정수가 아닌 문자를 입력했을시에에러메시지를 출력하고 다시 메뉴 선택으로 돌아가는 방향으로 하고싶어서 전체코드를 보시면 try문에 실행하고자 하는 코드를 넣고,메뉴선택시 문자를 입력하면 에러가 나도록 catch문에 에러메시지를 출력하고 continue문을 넣었습니다.package array.ex; import java.util.InputMismatchException; import java.util.Scanner; public class ProductAdminEx { public static void main(String[] args) { // *제약 조건 : 상품은 최대 10개까지 등록할 수 있다.* int maxCount = 10; // 상품구조 최대치를 유연하게 정하기위해 ArrayList 자료구조 사용 int productCount = 0; String[] productNames = new String[maxCount]; int[] productPrices = new int[maxCount]; Scanner sc = new Scanner (System.in); while(true) { System.out.println("1. 상품등록 | 2. 상품목록 | 3. 종료"); System.out.print("메뉴를 선택하세요 : "); try { int option = sc.nextInt(); sc.nextLine(); if(option == 1) { if(productCount >= 10) { System.out.println("더 이상 상품을 등록할 수 없습니다."); continue; } System.out.print("상품 이름을 입력하세요:"); productNames[productCount] = sc.nextLine(); System.out.print("상품 가격을 입력하세요:"); productPrices[productCount] = sc.nextInt(); sc.nextLine(); productCount++; } else if(option == 2) { System.out.println("지금까지 등록한 상품의 이름과 가격입니다."); for(int i = 0; i < productCount; i++) { System.out.println(productNames[i] + ":" + productPrices[i]); } } else if(option == 3) { System.out.println("프로그램을 종료합니다."); break; } // 잘못된 메뉴 입력시 문자입력시에 inputmismatchexception 예외처리를 사용할 수 있다. else { System.out.println("잘못된 메뉴 입력입니다."); } } catch (InputMismatchException e) { System.out.println("[ERROR] 숫자를 입력해주세요."); break; // continue문을 쓰면 에러메시지가 계속 반복된다. } } } } 문제는 다시 메뉴선택 부분으로 가지않고 끝없이 에러문이 반복됩니다. 그래서 일단 break문을 써서 프로그램이 종료되도록 하였습니다.. 여기서 에러메시지가 한번 출력되고 다시 메뉴선택 부분으로 가도록 하려면 어떻게 해야 할까요..?!
-
미해결스프링 핵심 원리 - 기본편
FilterType.ASSIGNABLE_TYPE 관련 질문있습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]1번 캡쳐2번 캡쳐Q) 컴포넌트 스캔 강의 초반에 강사님께서 기존에 사용하던AppConfig(1번 캡쳐)에서의 빈 등록과 새롭게 만들 AutoAppConfig (2번 캡쳐)에서의 빈 등록이 중복될까봐 AutoAppConfig에서 2번 캡쳐와 같이 Configuration.class 애노테이션을 붙인 녀석들을 exclude를 시켜주었습니다. 여기까지는 문제가 없이 이해가 가지만,강사님께서 알려주셨던 Assignable_type 을 활용하여기존에 사용하던 AppConfig 클래스를 아래와 같이 exclude 를 하여 돌려보았는데, 이때는 실행이 되지 않고 빈 충돌이 일어납니다. 이유가 무엇인지 궁금합니다.
-
미해결김영한의 실전 자바 - 기본편
강의 영상 음성 실수
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]강의 - "생성자 - 오버로딩과 this()"시간 - 2분 38초 ~ 2분 40내용 - "생성자를 오버라이딩 한 덕분에..." 라고 하셨는데"생성자를 오버로딩 한 덕분에..."로 말씀하시려 던 게 아닐까 생각합니다. 바로 10초 전에 헷갈리시다고 말씀하셔서 실수하신 것 같습니다. 별 거 아닌 사소한 내용이긴 한데 공유 드립니다.
-
해결됨김영한의 실전 자바 - 기본편
[다형성] 다형성 객체 생성과 참조에 관한 질문
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]다형성에 관해 명확한 이해가 조금 어려운 부분이 있어 질문 드립니다!아래의 코드에서, 1) 코드가 동작 가능한 이유는 '생성된 Child Class의 인스턴스에 Parent Class의 인스턴스가 포함되기 때문에, Parent Class의 참조값을 담을 수 있는 poly라는 변수에 Child Class 인스턴스 참조값을 저장할 수 있다.' 반대로, 2) 코드가 동작 불가한 이유는 '생성된 Parent Class 인스턴스에는 Child Class의 인스턴스가 포함되지 않아서, Child Class의 참조값을 담는 poly2 라는 변수에 Parent Class 인스턴스 참조값을 저장할 수 없다.' 이렇게 이해했습니다. 제가 이해한 바가 맞을까요?? 1) Parent poly = new Child(); 2) Child poly2 = new Parent(); 위의 이해가 맞다면, 1)코드에서 생성한 poly Parent Class변수는 Child 인스턴스를 생성했음에도 불구하고 Parent Class에만 접근할 수 있기에, Child 인스턴스에 대한 정보를 소실하는 것 처럼 보여집니다. Child 인스턴스 변수나 method에 접근하지 못함에도 Child 인스턴스를 포함하고 있는 것은 괜한 메모리를 사용하는 것은 아닌가 하는 생각이 드는데요, 2-1) 위에 표현한 제 생각이 옳은 생각인지가 궁금합니다. 실제로 Child 인스턴스에 대한 정보를 소실하는 것일까요? 아니면 Child 인스턴스는 존재하지만, 접근 권한만 제한받는 것일까요?? 2-2) 실제 인스턴스에 대한 정보를 소실하는 것이라면, 다형성을 활용하는 이유가 궁금합니다. 이 질문은 지금까지 학습한 내용을 정리하고 넘어가고자 질문을 드린 상황이기에, 추후 강의에서 다뤄지는 내용이면 강의를 통해 배우겠습니다.감사합니다!
-
미해결김영한의 실전 자바 - 중급 1편
intellij 단축키 표시가 파란색으로 나오는데 어떤 plugin을 설치해야 하나여?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]intellij 단축키 표시가 파란색으로 나오는데 어떤 plugin을 설치해야 하나여?
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
Interrupted() 질문드립니다.
안녕하세요!스레드 강의 정말 잘 듣고 있습니다~인터럽트에서 궁금한점이 있어서 질문드립니다.isInterrupted()는 Thread.currentThread에서 실행할 수 있고,interrupted()는 Thread에서 실행할 수 있는데 그럼 혹시 다른 스레드에서 인터럽트를 실행해도Thread.interrupted()에 걸릴까 싶어 테스트를 해보니 그러지는 않더라구요.Thread.interrupted의 내부를 보니 currentThread()를 호출하긴하던데,Thread.currentThread.interrupted()가 안되는 이유는 스레드의 내부적인 부분으로 보면 될까요? 궁금해서 혹시하고 질문드렸습니다ㅠ
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
notifyall에서 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 마지막 notifyall에서 만약에 c1 다음에 p1이 락을 획득하면 나머지 c2, c3, c4, c5는 대기집합에 들어가나요 아니면 깨어있는 상태로 계속있나요?
-
해결됨유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
SingletonBehaviour 수업 마지막 부분에 질문이 있습니다.
해당 수업 마지막에 솔루션 빌드를 하셨는데 이유가 궁금합니다.유니티에서 코드를 작성하고 에디터로 돌아와 리로드를 하는것과 솔루션 빌드를 하는것에 차이가 있는지 궁금합니다!
-
미해결파이썬 알고리즘 트레이딩 파트1: 알고리즘 트레이딩을 위한 파이썬 데이터 분석
.yaml 파일을 통한 환경설정에서 --force 명령어가 작동안합니다.
선생님 안녕하세요. 강의 잘 듣고 있습니다. 다름 아니라 미니콘다 프롬프트를 통해 가상환경설정 시기존 yaml 파일을 통해 환경설정을 덮어쓰기 하는 경우 에러가 발생합니다. (myenv-finance-analysis) C:\Users\baesilisk\env_yaml>conda env create --force -f myenv-finance-analysis.yamlusage: conda-script.py [-h] [-v] [--no-plugins] [-V] COMMAND ...conda-script.py: error: unrecognized arguments: --force 해결방법을 알려주시면 감사하겠습니다!
-
해결됨스프링 핵심 원리 - 기본편
재질문->클라이언트코드가 아니라 서버코드아닌가요?
OCP: 변경하지 않고 확장할 수 있다고 했는데!**지금 코드는 기능을 확장해서 변경하면, 클라이언트 코드에 영향을 준다!** 따라서 OCP를 위반한다.라는 pdf자료에 이해가 안되서 질문드립니다. 한서버내부에서도 특정클래스나 모듈이 다른 클래스나 모듈의기능을 요청하는 코드는 클라이언트 코드(appconfig),요청을 받아 처리하는 코드는 서버코드(serviceImpl)라고 볼수있다. 라고 전에 ai를 통해 답변을 받았는데여기서 serviceImpl을 변경한거아닌가요?그럼 서버코드가 변경이되고 서버코드에 영향을 준거 아닌가요?잘이해가 안되여
-
미해결김영한의 실전 자바 - 중급 2편
인텔리제이 먹통
인텔리제이 무료버전이 다 끝나서 다시 지우고 무료료 쓸 수있는 학생버전으로 깔았는데 그 다음부터 김영한님의 파일들이 잘 작동이 안됩니다. 일텔리제이 버전은 아래와 같습니다:IntelliJ IDEA 2024.2.1 (Ultimate Edition)Build #IU-242.21829.142, built on August 29, 2024Licensed to xxSubscription is active until September 2, 2025.For educational use only.Runtime version: 21.0.3+13-b509.11 aarch64 (JCEF 122.1.9)VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o. 김영한님의 폴더를 오픈하면 소스 파일이 안뜨고 이런식으로 뜹니다 또 어쩔때는 소스파일이 다 뜨지만 run을 하면 run이 실행되고 다시 프로젝트 목록의 소스파일들이 다 사라집니다
-
해결됨스프링 핵심 원리 - 기본편
RESTful API에 대해 설명해주는 강의가 있을까요?
HTTP강의에서 HTTP API 설계 방법에 대해서 배운다고 되어있는데HTTP API가 RESTful API를 의미하는 걸까요?사람인 같은 곳을 둘러보니까 RESTful API 설계 및 구현이 지원 자격이나 우대 사항에 많이 쓰여 있더라고요.궁금해서 인터넷에서 검색을 해봤는데, "Restful API는 HTTP URI를 통해 자원(resource)을 명시하고, HTTP 메소드를 활용해서 해당 자원에 대한 CRUD 기능을 수행하도록 도와주는 웹 서비스 디자인 패턴이다" 라고 되어있는데 이해가 잘 안 되네요.제가 학원에서 프로젝트를 할 때 Riot API를 사용해서 게임 전적 검색 사이트를 만들었는데, API 키를 발급 받고 특정 uri로 요청을 해서 JSON 같은 데이터를 받아 사용했거든요. 이런 API가 RESTful API인 걸까요?
-
해결됨스프링 핵심 원리 - 기본편
isInstanceOf가 왜 여러개로 되나영?
@Test @DisplayName("부모 타입으로 조회시,자식이 둘 이상 있으면,빈이름을 지정하면 된다.") void findBeanByParentTypeBeanName(){ DiscountPolicy rateDiscountPolicy=ac.getBean("rateDiscountPolicy",DiscountPolicy.class); assertThat(rateDiscountPolicy).isInstanceOf(RateDiscountPolicy.class); 이럴경우 //rateDiscountPolicy로 부터 반환된 실제 객체는 RateDiscountPolicy타입이고rateDiscountPolicy변수내에 담긴 실제객체가 RateDiscountPolicy타입의 인스턴트인지 비교한다고 커뮤니티에 설명을 해주셧엇는데 assertThat(rateDiscountPolicy).isInstanceOf(DiscountPolicy.class);왜 이런 경우에도 테스트가 성공되는걸까요? rateDiscountPolicy로 부터 반환된 실제 객체는 RateDiscountPolicy타입이지 DiscountPolicy타입은 아니지 않나요?
-
미해결김영한의 실전 자바 - 중급 2편
어떻게 오버라이딩된 toString()의 형식으로 출력되는지 헷갈립니다ㅠㅠ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예)[질문 내용]위의 코드에서 WildCardEx.printGenericV1(dogBox); 의 결과로 T = Animal{name='멍멍이', size=100} 이렇게 Animal에 오버라이딩한 toString의 형태가 출력되는지 궁금합니다...ㅠㅠ printGenericV1() 메서드에서는 box.get()을 사용하고 있지만, get() 메서드는 return 으로 그저 Dog 객체를 반환하는데 어떻게 오버라이딩 된 toString()의 형식으로 출력될 수 있는지 헷갈립니다ㅠ 기본적인 질문을 드려 죄송합니다...
-
해결됨김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
synchronized lock 획득 질문, 스프링에서 synchronized 질문
이해 확인에 대한 질문입니다. synchronized는 메서드에서 현재 getBalance()랑 withdraw()에서 선언되었는데, lock은 객체가 가지고있다고 이해하고있습니다. synchronized 메서드가 실행시 lock을 가지고 간다면 synchronized가 선언되지 않은 메서드(동일 클래스)는 자유롭게 실행이 가능한거고,만약 synchronized withdraw가 스레드1에서 실행중이라면 스레드2가 synchronized getBalance()시 락을 획득할 수 없어서 대기해야하는 것이 맞나요? 2. 제가 스프링 DB2까지 강의를 듣고있는데, 스프링에서는 실제로 WAS의 스레드 풀에서 기본적으로 많은 스레드를 확보해두고 있는 것으로 알고있습니다. 해당 강의들에서 synchronized를 사용해본 기억은 없는 것 같아요. 기본적으로 스프링은 synchronized가 필요한 부분에 구현이 되어있는 걸까요?(싱글톤 빈에 대한 질문입니다!) 아니면 멀티스레드의 측면도 개발자가 직접 테스트하면서 최적화가 필요할까요?(아마 제 예상으로는 개발자가 직접하는 부분도, 스프링이 해주는 부분도 있을 것 같은데...) 스프링 고급편, 부트편이나 JPA 학습 시점에 알 수 있는 부분일까요?
-
미해결김영한의 실전 자바 - 기본편
학습 방법에 대한 고민
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]현재 기본편 접근제어자를 학습하고 있는데 예제에서 이전에 공부했던 배열이나 생성자에 대한 내용에서 헤메이곤 하는데요.. 이런 상황에서 강의를 계속해서 수강하고 마지막까지 수강한 후에 다시 전체적으로 빠르게 수강하는것이 좋나요 아니면 헷갈릴때마다 다음 강의 보다는 전에 봤던 강의를 복습하는 방식이 좋을까요?
-
미해결김영한의 실전 자바 - 기본편
다형성 - 역할과 구현예제2 강의만 재생이 안돼요
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]새로고참도 해보고 여러가지 다 해봤는데 이 강의만 재생이 안됩니다. 오류 확인 부탁드립니다.
-
미해결김영한의 실전 자바 - 기본편
부모클래스나 두개 이상의 인터페이스가 있을 때 다른 부모에 있는 메서드가 실행되는 이유
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]클래스와 인터페이스 활용 강의를 듣고 문득 하위클래스는 상위의 AbstractAnimal과 Fly인터페이스와 관련이 있다는 느낌을 받아서 다음과 같이 코드를 작성했습니다.public static void main(String[] args) { Dog dog = new Dog(); Chicken chicken = new Chicken(); Bird bird = new Bird(); AbstractAnimal bird2 = new Bird(); soundTest(dog); soundTest(chicken); soundTest(bird); flyAnimalTest(chicken); flyAnimalTest(bird); soundTest(bird2); flyAnimalTest((Fly)bird2); } private static void flyAnimalTest(Fly fly) { System.out.println("날기테스트시작"); fly.fly(); System.out.println("날기테스트종료"); } 그런데 마지막 줄 flyAnimalTest에서 bird2는 인스턴스는 Bird2지만 호출타입은 AbstractAnimal이라서 AbstractAnimal을 Fly타입에 대입할 수 있나라는 의문도 들었고 무엇보다 AbstractAnimal에는 fly()라는 메서드가 없어서 이걸 AbstractAnimal에서 찾으면 당연히 없고 상위 클래스에서 fly를 찾으려고 해도 AbstractAnimal이 최상위니까 실행이 안되겠지? 라는 생각이 들었는데 이게 맞을까요? 그리고 한가지 더 궁금한게 있습니다. (Fly) bird2를 flyAnimalTest에 넣었는데 실행이 잘 됐습니다. bird2의 호출 타입은 Abstract이고 인스턴스는 Bird인데 (Fly)를 해주면 캐스팅 되는 과정이나 메모리상에서 fly함수를 어떻게 찾아가는지 과정을 알고싶습니다. bird2를 (Bird)로 다운캐스팅한 다음 flyAnimalTest메서드의 매개변수 Fly fly에 대입된 후에 작동하는 것은 이해가 가는데 (Fly)로 캐스팅했을 때 되는 이유는 무엇인가요?
-
해결됨스프링 핵심 원리 - 기본편
MemberApp오류
> Run with --stacktrace option to get the stack trace.> Run with --info or --debug option to get more log output.> Run with --scan to get full insights.> Get more help at https://help.gradle.org.Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.For more on this, please refer to https://docs.gradle.org/8.8/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.BUILD FAILED in 3s3 actionable tasks: 1 executed, 2 up-to-date================================Unsupported Java. Your build is currently configured to use Java 21.0.4 and Gradle 8.8.Possible solution: - Use Java 20 as Gradle JVM: Open Gradle settings - Open Gradle wrapper settings, change distributionUrl property to use compatible Gradle version and reload the project 두개의 오류가뜨고 있습니다 ㅠ