19,800원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결그림으로 배우는 자바, 파트2: 객체지향!
출력값이 다르다고 나오네요!
클라우드 스터딩에서 실행은 되는데 오류 없이 출력값이 다르다고 나오네요강의에서 알려주신 코드가 아니라 제 마음대로 코드를 짜서 그런가요? 코드 최대한 안따라하고 혼자 해보려고 했는데 잘못된 부분많을까요?ㅠ public class Starcraft {public static void main(String[] args) {// 객체 생성Marine ma = new Marine("레이너", 80);Medic me = new Medic("모랄레스", 60, 60);// 마린의 스팀팩!ma.steam();// 메딕의 힐!me.heal(ma);}}// 정보 클래스class Marine {String name;int hp;Marine(String name, int hp) {this.name = name;this.hp = hp;}void steam() {System.out.printf("[%s]의 스팀팩! Hp: %d -> %d\n", name, hp, hp-10);hp = hp-10;}}class Medic {String name;int hp;int mp;Medic(String name, int hp, int mp) {this.name = name;this.hp = hp;this.mp = mp;}void heal(Marine ma) {System.out.printf("[%s]의 치유! => [%s] Hp(%d -> %d)", name, ma.name, ma.hp, ma.hp+10);ma.hp = ma.hp + 10;}}
- 해결됨그림으로 배우는 자바, 파트2: 객체지향!
연습문제 이클립스에서는 되는데요
public class SongTest { public static void main(String[] args) { Artist h1 = new Artist("유재하", "별헤는밤"); Artist h2 = new Artist("임재범", "비상"); Artist h3 = new Artist("박완규", "비밀"); Artist them[] = {h1, h2, h3}; for(int i=0; i<them.length; i++) { them[i].printStr(); } }}class Song { String singer; String song; Artist(String singer, String song) { this.singer = singer; this.song = song; } void printStr() { System.out.println("Song { name: " + singer + ", " + "song: " + song + " }"); }} 이거 이클립스에서는 컴파일오류 없이 돌아가는데클라우드 스터딩 사이트에서는 오류가 나네요뭐가 문제일까요? /root/var/tmp/2023_05_13_08_49_23_350d34e1/SongTest.java:21: error: invalid method declaration; return type requiredArtist(String singer, String song) {^1 error
- 미해결그림으로 배우는 자바, 파트2: 객체지향!
객체 배열과 반복문 강의 중
안녕하세요:) 강의 예제중 양궁 국가대표 선발전 부분에서 질문드립니다. 다름이 아니라 토탈포인트 계산 부분에서 sum= sum + points[i]가 실행되는데 왜 누적값이 되는게 아닌지 궁금합니다!
- 해결됨그림으로 배우는 자바, 파트2: 객체지향!
클래스 실행 순서가 궁금합니다.
정답 코드 입니다.public class PlayerTest { public static void main(String[] args) { // 점수 배열 생성 int[] points0 = { 10, 9, 9, 8 }; int[] points1 = { 9, 10, 9, 9 }; int[] points2 = { 10, 9, 10, 10 }; // 선수 객체 생성 Player p0 = new Player("Kim", points0); Player p1 = new Player("Lee", points1); Player p2 = new Player("Park", points2); // 객체 배열 만들기 Player[] players = { p0, p1, p2 }; // 선수별 총점 출력 for (int i = 0; i < players.length; i++) { players[i].printTotalPoints(); } } } class Player { // 필드 String name; // 이름 int[] points; // 점수 // 생성자 Player(String str, int[] arr) { name = str; points = arr; } // 메소드 void printTotalPoints() { /* 2. 형식 문자열을 만드세요. */ System.out.printf("%s -> %d점\n", name, totalPoints()); } int totalPoints() { int sum = 0; for(int i = 0; i < points.length; i++){ sum += points[i]; } return sum; } } 위의 코드에서 'totalPoints()'메소드를 안에있는 for문 조건식 i<points.length;대신 점수 배열을 크키를 구하는데 저는 main메소드가 먼저 실행되는 것으로 알고 있어 points0 배열이 생성될 때 값도 대입했기 때문에 바로 크기를 알 수 있을 것으로 판단해 아래와 같이 points0.length 또는 points[i].length를 사용하려고 했으나 불가능하였습니다. for(int i = 0; i < points0.length; i++){ sum += points[i]; } 혹시나 main 메소드 부터 실행되는 것이 아니라면 points변수에 static을 부여해 프로그램이 시작하자마자 점수 배열을 생성을 하고 point[i].length를 사용해봤으나 'illegal start of expression' 라며 잘못된 표현이라는 에러가 나왔습니다. static int[] points0 = { 10, 9, 9, 8 }; static int[] points1 = { 9, 10, 9, 9 }; static int[] points2 = { 10, 9, 10, 10 }; 위와 같은 방법으로 풀면 왜 에러가 나는지 궁금합니다!
- 미해결그림으로 배우는 자바, 파트2: 객체지향!
자바api주사위통계 예제2번 질문있습니다
주사위 100개 던지는 코드를 작성할 때int[] counts = new int[13]; for(int i = 0 ; i<100; i++){ int a = DieA.roll(); int b = DieB.roll(); counts[a+b]++; }이렇게 작성하셧는데 counts[a+b]++; 이 부분이 이해가 가질 않습니다이것의 효과가 뭔가요?이걸로 무슨일이 일어나나요?너무 궁금합니다
- 미해결그림으로 배우는 자바, 파트2: 객체지향!
자바를 부탁해 질문
자바를 부탁해 책을 보고있습니다.책에 있는 실전 프로젝트인 영화 예매 관리 프로그램을 보려는데 어떻게 접근하고 공부해야할지 모르겠습니다...코드를 읽자니 읽히지도 않고 뭐가 뭐였는지도 기억도 안납니다... 코드 한줄한줄이 너무 어렵습니다...
- 미해결그림으로 배우는 자바, 파트2: 객체지향!
질문있습니다.
자바 개념은 이해했으나 자바 문제들(블랙잭, 달력 출력하기 등)을 풀려고하면 손도 못대겠습니다. 진짜 쉬운 문제들은 풀어도 어려운 문제들은 못 풀겠습니다.메서드도 반환타입, 매개변수, 반환해야하나? 이런 것들을 어떻게 고려해야할지 모르겠습니다...개념은 알고 있는데 코딩을 못합니다... 어려운 자바 문제들은 어떻게 접근해야하나요? (순서도나 의사코드 작성하라던데 어렵습니다 ㅠㅠ)메서드를 어떻게 만들어줘야할지 모르겠습니다.( 개념은 알고 있습니다.) 이 상태에서 jsp, spring 나가는게 도움이 될까요?도움 부탁드립니다 홍팍님.......
- 미해결그림으로 배우는 자바, 파트2: 객체지향!
강의 정리 내용
안녕하세요 ! 쌤 덕분에 자바를 쉽게 이해하면서 공부하고 있습니다!다름이 아니라, 강의에서 중요한 부분을 블로그에 정리하고 싶은데 강의가 유료다보니 블로그에 공개 게시글로 올리는건 무리겠죠?
- 미해결그림으로 배우는 자바, 파트2: 객체지향!
유튜버 강의와 차이점 문의드립니다.
열심히 홍팍님 강의를 보고 있는 구독자입니다.유튜브에도 동일한 강의가 있는데, 자바API부분이 유튜브가 좀 더 시간이 깁니다. 강의 내용에 차이점이 있나요??아니면 뒤에 유튜브 댓글, 클라우드스터딩 안내하는 부분만 추가된 걸까요? 항상 홍팍님 강의에 동기부여 받고 열심히 하겠습니다.
- 미해결그림으로 배우는 자바, 파트2: 객체지향!
홍팍님 교재 문의
위대한 홍팍님 유튜브로 강의보다가, 인프런으로도 수익을 창출해드리고자 강의 신청했습니다. 혹시 자바 강의는 [자바를부탁해] 책도 인터넷 강의랑 같은 내용인가요>>>
- 미해결그림으로 배우는 자바, 파트2: 객체지향!
외부로부터 감추기 문제 질문
6번줄에서 System.out.print(wallet.toString()); 라고 출력하는데 toString 메소드를 보면 리턴으로 반환하는데 리턴하면 System.out.print 메소드가 필요없지 않나요?
- 미해결그림으로 배우는 자바, 파트2: 객체지향!
클래스가 다른데 메소드를 어떻게 가져오는건가요?
팀클래스에서 플레이서 클래스에 있는 totalPoint메소드를 사용하던데 클래스가 다른데 어떻게 사용하는건가요?
- 미해결그림으로 배우는 자바, 파트2: 객체지향!
객체 생성할 때 매개변수에 new연산자는 왜 붙인건가요?
매개변수에 new 없이 int[]{9, 8, 10}하면 안되나요?new를 붙이신 이유가 뭔가요??
- 미해결그림으로 배우는 자바, 파트2: 객체지향!
안녕하세요. 생성자관련?하여 질문드립니다.
자식클래스가 부모클래스를 상속하는 경우에 부모클래스의 필드값을 쓰고싶으면 생성자를 통해 초기화를 보통 했었는데요. 갑자기 든 생각인데 자식클래스에서 부모클래스의 값을 바로 초기화 할 수 있는 방법은 없는걸까요? 부모클래스(동물), 자식클래스(조류)인 경우에 public class 동물{ String value; } 일때 자식클래스에서 동물의 참조변수를 만들어서 동물 클래스의 value에 접근하려해도 안되고, 당연하지만 '.'으로 접근도 불가능해서 public class 조류{ public 조류(){ value = "새"; } } 이런식으로 꼭 생성자를 통해서만 초기화가 가능한걸까요?
- 해결됨그림으로 배우는 자바, 파트2: 객체지향!
홍팍쌤 안녕하세요
학원 강의 개강 50일 정도를 남겨 놓고, 홍팍쌤 자바 강의 파트 1, 2를 모두 완강하였습니다.!! 처음부터 기초를 탄탄하게 잡고 가기 위해, 홍팍쌤 강의를 통해 미리 예습을 한 것인데, 이 이후로는 복습을 어느 방식으로 하면 더 효율적일까요? (더 완벽한 개념 숙지를 위해 2-3번 정도 강의를 빠르게 돌려볼 예정입니다!) 쌤께서 클라우드스터딩에 올려주신 파트 1,2 연습문제들을 풀 수 있을 정도면 충분할까요? 항상 좋은 강의 감사드립니다. :) html/css 강의도 빨리 듣고 싶어요..!
- 미해결그림으로 배우는 자바, 파트2: 객체지향!
다형성(?)에대해 질문드립니다.
public class Polymorphism { public static void main(String[] args) { // 성기사 객체 생성 HolyKnight uther = new HolyKnight("우서", 180); // 탱커로서의 역할 수행 Tanker t = uther; t.increaseHp(); // 힐러로서의 역할 수행 Healer h = uther; h.heal(); uther.increaseHp(); uther.heal(); }} 인터페이스인 Healer와 Tanker를 상속받는 HolyKnight클래스가 있습니다. HolyKnights가 상속을 받고 그 클래스에서 재정의를 하기에 동작의 실질적 형태는 HolyKnight가 갖고있게 되는건데 굳이 탱크,힐러의 인터페이스 객체 h와 t를 만들어서 그것을 가르켜서 HolyKnights 의 재정의된 메소드를 실행시킬 이유가 있을까요?? 원랜 메서드를 재정의한 클래스의 객체하나만 선언해서 그 객체를 참조해 재정의된 interface들을 실행 시킬 수 있었는데 각 인터페이스마다 객체를 만들면 동작은 똑같은데 코드만 늘어나는 경우인게 아닌가 해서 질문드립니다. (HolyKnights 참조변수는 탱크와 힐러의 인터페이스에 접근가능 하지만 힐러와 탱크인터페이스의 참조변수를 만들어 실행시키면 힐러는 탱크를 탱크는 힐러의 메서드를 사용할 수 없는 장점?때문일까요??)
- 미해결그림으로 배우는 자바, 파트2: 객체지향!
생성자
public class UpCasting { public static void main(String[] args) { // 기사 객체 생성 및 초기화 Knight knight = new Knight(); knight.name = "아서스"; knight.hp = 180; knight.strength = 50; // 도적 객체 생성 및 초기화 Thief thief = new Thief(); thief.name = "발리라"; thief.hp = 120; thief.agility = 40; // 업 캐스팅 - 부모 타입으로 객체를 해석 Adventurer adv0 = knight; Adventurer adv1 = thief; // 모험가들의 배열 생성 Adventurer[] advs = { adv0, adv1 }; // 모든 모험가의 정보 출력 for (int i = 0; i < advs.length; i++) { System.out.println(advs[i].toString()); } }}/* 1. 부모 클래스 Adventurer를 만드세요. */class Adventurer { /* 1.1 공통 필드를 선언하세요. */ String name; int hp; /* 1.2 공통 메소드를 작성하세요. */ public void punch() { System.out.printf("[%s]의 펀치!!\n", name); } public String toString() { return String.format("[%s] HP: %d", name, hp); }}/* 2. Knight를 Adventurer의 자식 클래스로 정의하세요. */class Knight extends Adventurer { /* 2.1 부모와 중복된 필드를 제거하세요. */ int strength; // 힘 /* 2.2 부모와 중복된 메소드를 제거하세요. */ public void berserker() { System.out.println("체력과 공격력이 증가합니다."); }}/* 3. Thief를 Adventurer의 자식 클래스로 정의하세요. */class Thief extends Adventurer { /* 3.1 부모와 중복된 필드를 제거하세요. */ int agility; // 민첩 /* 3.2 부모와 중복된 메소드를 제거하세요. */ public void sharpen() { System.out.println("크리티컬 확률이 증가합니다."); }}/////////////////////보통 이런식의 코드를 많이본 것 같습니다. 클래스끼리 상속을 통해 필드값을 공유하여 접근하고 수정하는 방법이요.이코드도 생성자를 따로 사용햐지 않았는데 저번에도 말씀드렸지만 굳이 변수를 하나하나 다 적어가며 생성자를 선언해야 하는 이유가 있을까요?보통 이런 방법을 더 많이 쓰지 않나해서 질문드립니다
- 미해결그림으로 배우는 자바, 파트2: 객체지향!
Object최상위 클래스에
Object최상위 클래스에 toString()메서드가 있는걸로 알고있습니다. 수업때마다 toString메서드를 만드시는데 그게 메서드 재정의(오버라이딩)이라고 보면 되나요??
- 미해결그림으로 배우는 자바, 파트2: 객체지향!
질문있습니다.
제가 파이썬을 올초부터 공부했고 자바는 지난달에 시작을 하였습니다. 파이썬은 list배열로 모든걸 해결하는데 자바는 배열과 ArrayList가 나뉘어져있더라구요. 각기 특징도 다르구요. 선생님께서는 코드를 짜실때 어떤 상황에서 배열을 쓸지 ArrayList를 쓸지 어떻게 구별을 하시는지 궁금해서 질문드립니다.
- 미해결그림으로 배우는 자바, 파트2: 객체지향!
질문있습니다.
public class KnightTest { public static void main(String[] args) { // 객체 생성 Knight knight = new Knight("돈키호테",30); System.out.println("[객체 생성]"); System.out.printf("Knight { name: %s, hp: %d }\n",knight.getName(), knight.getHp()); knight.setHp(30); System.out.println("[체력 증가 +30]"); System.out.printf("Knight { name: %s, hp: %d }",knight.getName(), knight.getHp()); }}class Knight { // 필드 private String name; private int hp; // 생성자 public Knight(String name, int hp){ this.name=name; this.hp = hp; } // 게터 public String getName(){ return this.name; } public int getHp(){ return this.hp; } //// 세터 //public void setName(String s){ // name = s; //} public void setHp(int n){ hp += n; }}///이런식의 코드도 괜찮은걸까요?? 뭔가 toString()메서드를 만들어서 return을 해서 그값을 출력하는것보다 이게 더 와닿아서 게터세터에만 의존해서 출력을 하였는데. 어떤 방법이 좋은건지 궁금해서 그리고 왜 더 좋은지가 궁금해서질문드립니다