문제 풀이/해결 완료

2025-04-14 Java 문제 풀이

호기심 많은 솔이 2025. 4. 14. 15:29

*코드 개선을 위한 훈수 언제나 환영입니다.

 

 

 

우선 문제를 읽고 CARD_NUM만큼 for문을 돌면서 cards배열에 차례대로 카드 번호와 광 여부를 넣어야겠다. 1~10이 두 번 반복되는데 그중 한 번만 num이 1, 3, 8일 때 광이여야 한다고 생각했습니다.

 

따라서 i < 10인 동안 num이 1, 3, 8이면 isKwang = true가 되도록 while문을 작성했고, 그 이후에는 i가 10~19일 때, num이 1~10이 돼야 하고 isKwang은 false가 되도록 코드를 작성하였습니다.

 

위의 내용을 바탕으로 작성한 코드는 아래와 같습니다.

 

SutdaDeck 클래스

 

 

SutdaCard 클래스

 

 

SutdaMain 클래스

 

 

출력창

 

**실행 순서 : SutdaDeck deck = new SutdaDeck();으로 객체를 생성하려고 할 때, 생성자 SutdaDeck()이 호출되고, 메서드를 사용하려고 하면 이때 생성된 객체 deck을 바탕으로 메서드가 호출된다.

 

ex) deck.shuffle();

 

 

이렇게 작성했더니 출력창에 아무것도 출력되지 않았습니다.

코드에 뭔가 오류가 있는 것 같은데 고민해 보고 해결해서 해당 게시물에 추가로 업로드하겠습니다.

 

 

 

 

 

<추가> 해결 완료 25-04-14 16:45

잘못 생각했었던 부분 : SutdaDeck클래스의 SutdaDeck() 생성자 부분에서 for문을 반복해서 돌면서 i값이 하나씩 증가한다고 생각하고 while문을 작성했는데, while문 안에 i++가 없어서 i가 0에서 증가할 수 없고, 따라서 while문을 빠져나올 수 없는 상황이 발생했었습니다.

 

<수정한 SutdaDeck 클래스>

생성자 SutdaDeck() 수정 완료

 

 

 

for문이 있다고 해서 무작정 한 바퀴 돌고 i값이 증가하겠지라고 생각하면 안된다. for문 내부에서 한 바퀴를 돌 수 있는지, 즉, for문의 종료시점까지 도달할 수 있는지를 따져보고 판단하자!