<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=JTDStudy%2F%EC%B2%AB%EB%B2%88%EC%A7%B8%EA%B3%BC%EC%A0%9C%2F%EC%9B%90%EB%AA%85</id>
	<title>JTDStudy/첫번째과제/원명 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=JTDStudy%2F%EC%B2%AB%EB%B2%88%EC%A7%B8%EA%B3%BC%EC%A0%9C%2F%EC%9B%90%EB%AA%85"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=JTDStudy/%EC%B2%AB%EB%B2%88%EC%A7%B8%EA%B3%BC%EC%A0%9C/%EC%9B%90%EB%AA%85&amp;action=history"/>
	<updated>2026-05-15T13:52:50Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=JTDStudy/%EC%B2%AB%EB%B2%88%EC%A7%B8%EA%B3%BC%EC%A0%9C/%EC%9B%90%EB%AA%85&amp;diff=32698&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:23, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=JTDStudy/%EC%B2%AB%EB%B2%88%EC%A7%B8%EA%B3%BC%EC%A0%9C/%EC%9B%90%EB%AA%85&amp;diff=32698&amp;oldid=prev"/>
		<updated>2021-02-07T05:23:29Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= 실행코드 =&lt;br /&gt;
 import javax.swing.JOptionPane;&lt;br /&gt;
 public class BaseBall {	&lt;br /&gt;
 	private int correctNumber;&lt;br /&gt;
 	public static void main(String[] args) {&lt;br /&gt;
 		BaseBall oneGame = new BaseBall();&lt;br /&gt;
 		oneGame.setCorrectNumber();&lt;br /&gt;
 		int guess = 0, result = 0;&lt;br /&gt;
 		do&lt;br /&gt;
 		{&lt;br /&gt;
 			guess = oneGame.inputGuess();&lt;br /&gt;
 			result = oneGame.compare(guess);&lt;br /&gt;
 			if (result != 30)&lt;br /&gt;
 				JOptionPane.showMessageDialog(null, (result / 10) + &amp;quot; Strike, &amp;quot; &lt;br /&gt;
 						+ (result % 10) + &amp;quot; Ball&amp;quot;);&lt;br /&gt;
 		}while (result != 30);&lt;br /&gt;
 		oneGame.displayResult();&lt;br /&gt;
 	}&lt;br /&gt;
 	public void setCorrectNumber()&lt;br /&gt;
 	{&lt;br /&gt;
 		int setNumber = 0;&lt;br /&gt;
 		do&lt;br /&gt;
 		{&lt;br /&gt;
 			setNumber = (int) (Math.random() * 10);&lt;br /&gt;
 		}while (setNumber == 0);&lt;br /&gt;
 		correctNumber = setNumber;&lt;br /&gt;
 		do&lt;br /&gt;
 		{&lt;br /&gt;
 			setNumber = (int) (Math.random() * 10);&lt;br /&gt;
 		}while (correctNumber == setNumber);&lt;br /&gt;
 		correctNumber = correctNumber * 10 + setNumber;&lt;br /&gt;
 		do&lt;br /&gt;
 		{&lt;br /&gt;
 			setNumber = (int) (Math.random() * 10);&lt;br /&gt;
 		}while (((int)(correctNumber / 10)) == setNumber &lt;br /&gt;
 				|| ((int)(correctNumber % 10)) == setNumber);&lt;br /&gt;
 		correctNumber = correctNumber * 10 + setNumber;&lt;br /&gt;
 	}&lt;br /&gt;
 	public int inputGuess()&lt;br /&gt;
 	{&lt;br /&gt;
 		String input =  JOptionPane.showInputDialog(&amp;quot;Enter three different number\n&amp;quot;);&lt;br /&gt;
 		int guess = Integer.parseInt(input);&lt;br /&gt;
 		return guess;&lt;br /&gt;
 	}&lt;br /&gt;
 	public int compare(int aGuess)&lt;br /&gt;
 	{&lt;br /&gt;
 		int compareResult = 0, cCorrect = correctNumber;&lt;br /&gt;
 		int firstGuess = (int) (aGuess / 100);&lt;br /&gt;
 		int secondGuess = ((int) (aGuess / 10)) % 10;&lt;br /&gt;
 		int thirdGuess = aGuess % 10;&lt;br /&gt;
 		if (((int)(cCorrect / 100) == firstGuess))&lt;br /&gt;
 				compareResult ++;&lt;br /&gt;
 		cCorrect = cCorrect % 100;&lt;br /&gt;
 		if (((int)(cCorrect / 10) == secondGuess))&lt;br /&gt;
 				compareResult ++;&lt;br /&gt;
 		cCorrect = cCorrect % 10;&lt;br /&gt;
 		if (cCorrect == thirdGuess)&lt;br /&gt;
 				compareResult ++;&lt;br /&gt;
 		compareResult *= 10;&lt;br /&gt;
 		cCorrect = correctNumber;&lt;br /&gt;
 		if (((int)(cCorrect / 100)) == secondGuess &lt;br /&gt;
 				|| ((int)(cCorrect / (100))) == thirdGuess)&lt;br /&gt;
 			compareResult ++;&lt;br /&gt;
 		cCorrect = cCorrect % 100;&lt;br /&gt;
 		if (((int)(cCorrect / 10)) == firstGuess &lt;br /&gt;
 				|| ((int)(cCorrect / (10))) == thirdGuess)&lt;br /&gt;
 			compareResult ++;&lt;br /&gt;
 		cCorrect = cCorrect % 10;&lt;br /&gt;
 		if ((cCorrect == firstGuess) || (cCorrect == secondGuess))&lt;br /&gt;
 			compareResult ++;&lt;br /&gt;
 		return compareResult;&lt;br /&gt;
 	}&lt;br /&gt;
 	public void displayResult()&lt;br /&gt;
 	{&lt;br /&gt;
 		JOptionPane.showMessageDialog(null, &amp;quot;You are right!\n Answer is &amp;quot; + correctNumber);&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
= 잡담 =&lt;br /&gt;
* 정답을 int변수 3자리 숫자로 표현해서 만들어봤더니 코드만 더 길어졌네요 -0-;; - [[문원명]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= 개선 시도 =&lt;br /&gt;
집에서 놀다가 우연히 여기를 와서 고쳐봅니다. 조금 더 생각해 보시면 되지요. 저에게 재미있는 경험을 주었는데, 문원명 후배님도 보시라고 과정을 만들어 두었습니다.  선행학습으로 JUnit이 있어야 하는데, http://junit.org 에서 궁금하시면 [http://www.devx.com/Java/Article/31983/0/page/2 관련문서]를 보시고 선배들에게 물어보세요. &lt;br /&gt;
&lt;br /&gt;
용기가 내셔서 저를 찾으면... ;; &lt;br /&gt;
--NeoCoin&lt;br /&gt;
* 처음에는 Test-Driven Development 에 입각하여 만들어 보려고 했으나, Java를 거의 처음 시작하고 프로그래밍 경험의 공백기간이 길었던게 큰 타격이었습니다ㅠㅠ. 결국에는 문법과 알고리즘에만 신경을 쓰다보니 TDD방식으로 다루기가 쉽지 않네요. 개선 조언을 해 주신 류상민 선배님 감사합니다 ㅎㅎ -[[문원명]]&lt;br /&gt;
** 오해가 있을 것 같아서 코멘트 합니다. TDD는 별로 중요하지 않습니다. 결정적으로 저는 &amp;#039;&amp;#039;&amp;#039;TDD로 하지 않았습니다.&amp;#039;&amp;#039;&amp;#039; 그냥 Refactoring시 Regression Test를 위해서 JUnit 을 썼을 뿐이에요.--NeoCoin&lt;br /&gt;
*** 네, 제가 TDD의 의미를 확실히 하지 못한 것 같습니다. TDD책의 앞부분만 읽어 보았는데, 계속해서 더 읽어야 나가야겠다는 다짐이 드네요. 관심 가져주셔서 고맙습니다 ㅋ -[[문원명]]&lt;br /&gt;
== 과정 ==&lt;br /&gt;
초기의 테스트 가능하도록 원하는 값으로 무작위로 나오는 답안을 세팅하는 함수 추가.&lt;br /&gt;
 // ..생략&lt;br /&gt;
 	void setCorrectNumber(int in) {&lt;br /&gt;
 		correctNumber = in;&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	@Test&lt;br /&gt;
 	public void test2() {&lt;br /&gt;
 		BaseBall oneGame = new BaseBall();&lt;br /&gt;
 		oneGame.setCorrectNumber(123);&lt;br /&gt;
 		assertEquals(30, oneGame.compare(123));&lt;br /&gt;
 		assertEquals(10, oneGame.compare(100, 123));&lt;br /&gt;
 		assertEquals(2, oneGame.compare(310, 123));&lt;br /&gt;
 	}&lt;br /&gt;
 //..생략&lt;br /&gt;
&lt;br /&gt;
setCorrectNumber 하기도 귀찮아서 compare 부분을 확장 , 내부에서 쓰일일이 없는 함수로 제거 목적으로 코스 수정&lt;br /&gt;
 	@Test&lt;br /&gt;
 	public void test2() {&lt;br /&gt;
 		BaseBall oneGame = new BaseBall();&lt;br /&gt;
 		assertEquals(30, oneGame.compare(123, 123));&lt;br /&gt;
 		assertEquals(10, oneGame.compare(100, 123));&lt;br /&gt;
 		assertEquals(2, oneGame.compare(310, 123));&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	public int compare(int aGuess) {&lt;br /&gt;
 		return compare(aGuess, correctNumber);&lt;br /&gt;
 	}&lt;br /&gt;
 	public int compare(int aGuess, int answer) {&lt;br /&gt;
 		correctNumber = answer;&lt;br /&gt;
 &lt;br /&gt;
 		int compareResult = 0, cCorrect = correctNumber;&lt;br /&gt;
 //생략&lt;br /&gt;
 	}&lt;br /&gt;
&lt;br /&gt;
readability 를 위해 필요없는 typecasting 문법들 제거 (Java Language Specification의 규칙들을 보세요. 해당 typecasting은 거의다 필요 없는겁니다.) 유의미한 단위로 분리&lt;br /&gt;
 	public int compare(int aGuess, int answer) {&lt;br /&gt;
 		correctNumber = answer;&lt;br /&gt;
 &lt;br /&gt;
 		int compareResult = 0, cCorrect = correctNumber;&lt;br /&gt;
 		int firstGuess = aGuess / 100 % 10;&lt;br /&gt;
 		int secondGuess = aGuess / 10 % 10;&lt;br /&gt;
 		int thirdGuess = aGuess % 10;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 		if (cCorrect / 100 == firstGuess)&lt;br /&gt;
 			compareResult++;&lt;br /&gt;
 		cCorrect = cCorrect % 100;&lt;br /&gt;
 		if (cCorrect / 10 == secondGuess)&lt;br /&gt;
 			compareResult++;&lt;br /&gt;
 		cCorrect = cCorrect % 10;&lt;br /&gt;
 		if (cCorrect == thirdGuess)&lt;br /&gt;
 			compareResult++;&lt;br /&gt;
 		compareResult *= 10;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 		cCorrect = correctNumber;&lt;br /&gt;
 		if ((cCorrect / 100) == secondGuess || (cCorrect / 100) == thirdGuess)&lt;br /&gt;
 			compareResult++;&lt;br /&gt;
 		cCorrect = cCorrect % 100;&lt;br /&gt;
 		if ((cCorrect / 10) == firstGuess || (cCorrect / 10) == thirdGuess)&lt;br /&gt;
 			compareResult++;&lt;br /&gt;
 		cCorrect = cCorrect % 10;&lt;br /&gt;
 		if ((cCorrect == firstGuess) || (cCorrect == secondGuess))&lt;br /&gt;
 			compareResult++;&lt;br /&gt;
 		return compareResult;&lt;br /&gt;
 	}&lt;br /&gt;
특정 포지션의 숫자를 얻어오기 위한 반복 부분들 발견, 특정 포지션을 얻어오는 함수 만들기&lt;br /&gt;
 	int positionNum(int value, int pos) {&lt;br /&gt;
 		if (pos &amp;amp;lt; 1)&lt;br /&gt;
 			throw new IndexOutOfBoundsException(&amp;quot;pos값은 1이상을 넣어주세요.&amp;quot;);&lt;br /&gt;
 		int a = value % (int) Math.pow(10, pos);&lt;br /&gt;
 		return a / (int) Math.pow(10, pos - 1);&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	@Test&lt;br /&gt;
 	public void getPositionNum() {&lt;br /&gt;
 		assertEquals(3, positionNum(123, 1));&lt;br /&gt;
 		assertEquals(2, positionNum(123, 2));&lt;br /&gt;
 		assertEquals(1, positionNum(123, 3));&lt;br /&gt;
 	}&lt;br /&gt;
&lt;br /&gt;
해당 함수를 알고리즘에 적용, Test는 계속 녹색 . &lt;br /&gt;
결과 값을 의미를 드러낼수 있도록 변경&lt;br /&gt;
더이상 함수가 this.correctNumber에 의존할 필요 없으므로 코드 개선&lt;br /&gt;
 public int compare(int aGuess, int cCorrect) {&lt;br /&gt;
 		int firstGuess = positionNum(aGuess,3);&lt;br /&gt;
 		int secondGuess = positionNum(aGuess,2);&lt;br /&gt;
 		int thirdGuess = positionNum(aGuess,1);&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 		int strike=0;&lt;br /&gt;
 		if (positionNum(cCorrect,3) == firstGuess)&lt;br /&gt;
 			strike++;&lt;br /&gt;
 		if (positionNum(cCorrect,2) == secondGuess)&lt;br /&gt;
 			strike++;&lt;br /&gt;
 		if (positionNum(cCorrect,1) == thirdGuess)&lt;br /&gt;
 			strike++;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 		int ball=0;&lt;br /&gt;
 		if (positionNum(cCorrect,3) == secondGuess || positionNum(cCorrect,3) == thirdGuess)&lt;br /&gt;
 			ball++;&lt;br /&gt;
 		if (positionNum(cCorrect,2) == firstGuess || positionNum(cCorrect,2) == thirdGuess)&lt;br /&gt;
 			ball++;&lt;br /&gt;
 		if ((positionNum(cCorrect,1) == firstGuess) || (positionNum(cCorrect,1) == secondGuess))&lt;br /&gt;
 			ball++;&lt;br /&gt;
 		return ball + strike*10;&lt;br /&gt;
 	}&lt;br /&gt;
코드에 약간 패턴이 보인다. inline시키면 보일것 같다. 그래서 xxxGuess 를 inline &lt;br /&gt;
 public int compare(int aGuess, int answer) {&lt;br /&gt;
 		int cCorrect = answer;&lt;br /&gt;
 		int strike=0;&lt;br /&gt;
 		if (positionNum(cCorrect,3) == positionNum(aGuess,3))&lt;br /&gt;
 			strike++;&lt;br /&gt;
 		if (positionNum(cCorrect,2) == positionNum(aGuess,2))&lt;br /&gt;
 			strike++;&lt;br /&gt;
 		if (positionNum(cCorrect,1) == positionNum(aGuess,1))&lt;br /&gt;
 			strike++;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 		int ball=0;&lt;br /&gt;
 		if (positionNum(cCorrect,3) == positionNum(aGuess,2) || positionNum(cCorrect,3) == positionNum(aGuess,1))&lt;br /&gt;
 			ball++;&lt;br /&gt;
 		if (positionNum(cCorrect,2) == positionNum(aGuess,3) || positionNum(cCorrect,2) == positionNum(aGuess,1))&lt;br /&gt;
 			ball++;&lt;br /&gt;
 		if ((positionNum(cCorrect,1) == positionNum(aGuess,3)) || (positionNum(cCorrect,1) == positionNum(aGuess,2)))&lt;br /&gt;
 			ball++;&lt;br /&gt;
 		return ball + strike*10;&lt;br /&gt;
 	}&lt;br /&gt;
&lt;br /&gt;
숫자 패턴을 파악하고 중복 개선, magic number 제거&lt;br /&gt;
 	public int compare(int aGuess, int cCorrect) {&lt;br /&gt;
 		final int START_POS = 1,END_POS = 3;&lt;br /&gt;
 &lt;br /&gt;
 		int strike = 0;&lt;br /&gt;
 		for (int pos = END_POS; pos &amp;amp;gt;=START_POS; pos--) {&lt;br /&gt;
 			if (positionNum(cCorrect, pos) == positionNum(aGuess, pos))&lt;br /&gt;
 				strike++;&lt;br /&gt;
 		}&lt;br /&gt;
 &lt;br /&gt;
 		int ball = 0;&lt;br /&gt;
 		for (int corPos = END_POS; corPos &amp;amp;gt;=START_POS; corPos--) {&lt;br /&gt;
 			for (int guePos = END_POS; guePos &amp;amp;gt; 0; guePos--) {&lt;br /&gt;
 				if (corPos != guePos &amp;amp;amp;&amp;amp;amp; positionNum(cCorrect, corPos) == positionNum(aGuess,guePos))&lt;br /&gt;
 					ball++;&lt;br /&gt;
 			}&lt;br /&gt;
 		}&lt;br /&gt;
 		return ball + strike * 10;&lt;br /&gt;
 	}&lt;br /&gt;
&lt;br /&gt;
두개의 루프의 정확한 의미 파악, 합침&lt;br /&gt;
 	public int compare(int aGuess, int cCorrect) {&lt;br /&gt;
 		final int START_POS = 1, END_POS = 3;&lt;br /&gt;
 &lt;br /&gt;
 		int strike = 0, ball = 0;&lt;br /&gt;
 &lt;br /&gt;
 		for (int corPos = END_POS; corPos &amp;amp;gt;= START_POS; corPos--) {&lt;br /&gt;
 			for (int guePos = END_POS; guePos &amp;amp;gt;= START_POS; guePos--) {&lt;br /&gt;
 				if (positionNum(cCorrect, corPos) == positionNum(aGuess, guePos)) {&lt;br /&gt;
 					if (corPos == guePos)&lt;br /&gt;
 						strike++;&lt;br /&gt;
 					else&lt;br /&gt;
 						ball++;&lt;br /&gt;
 				}&lt;br /&gt;
 			}&lt;br /&gt;
 		}&lt;br /&gt;
 		return ball + strike * 10;&lt;br /&gt;
 	}&lt;br /&gt;
&lt;br /&gt;
해당 루틴이 지날때 마다 result 값에 10과 1을 더해주는 방식으로 바꿈&lt;br /&gt;
 	public int compare(int aGuess, int cCorrect) {&lt;br /&gt;
 		final int START_POS = 1, END_POS = 3, STRIKE_DELTA = 10, BALL_DELTA = 1;&lt;br /&gt;
 &lt;br /&gt;
 		int result = 0;  //10자리가 strike, 1자리고 ball 값&lt;br /&gt;
 		for (int corPos = END_POS; corPos &amp;amp;gt;= START_POS; corPos--)&lt;br /&gt;
 			for (int guePos = END_POS; guePos &amp;amp;gt;= START_POS; guePos--)&lt;br /&gt;
 				if (positionNum(cCorrect, corPos) == positionNum(aGuess, guePos))&lt;br /&gt;
 					result += (corPos == guePos) ? STRIKE_DELTA : BALL_DELTA;&lt;br /&gt;
 		return result;&lt;br /&gt;
 	}&lt;br /&gt;
&lt;br /&gt;
기타 overloading된 무의미한 compare를 정리. 소스상 setCorrectNumber를 생성자로 옮김.&lt;br /&gt;
더 개선하고 싶으나 그냥 하기 지쳐서 여기서 그만..&lt;br /&gt;
 package test;&lt;br /&gt;
 &lt;br /&gt;
 import static org.junit.Assert.assertEquals;&lt;br /&gt;
 import org.junit.Test;&lt;br /&gt;
 import javax.swing.JOptionPane;&lt;br /&gt;
 &lt;br /&gt;
 public class BaseBall {&lt;br /&gt;
 	private int correctNumber;&lt;br /&gt;
 &lt;br /&gt;
 	public static void main(String[] args) {&lt;br /&gt;
 		final int END_GAME_NUM = 30;&lt;br /&gt;
 &lt;br /&gt;
 		BaseBall oneGame = new BaseBall();&lt;br /&gt;
 		while (true) {&lt;br /&gt;
 			int result = oneGame.runOneTurn();&lt;br /&gt;
 			if (result == END_GAME_NUM)&lt;br /&gt;
 				break;&lt;br /&gt;
 			else&lt;br /&gt;
 				JOptionPane.showMessageDialog(null,&lt;br /&gt;
 					String.format(&amp;quot;%d Strike, %d Ball&amp;quot;, result / 10, result % 10));&lt;br /&gt;
 		}&lt;br /&gt;
 		oneGame.displayResult();&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	public int runOneTurn() {&lt;br /&gt;
 		return compare(this.correctNumber, inputGuess());&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	public BaseBall() {&lt;br /&gt;
 		int setNumber = 0;&lt;br /&gt;
 		do {&lt;br /&gt;
 			setNumber = (int) (Math.random() * 10);&lt;br /&gt;
 		} while (setNumber == 0);&lt;br /&gt;
 		correctNumber = setNumber;&lt;br /&gt;
 		do {&lt;br /&gt;
 			setNumber = (int) (Math.random() * 10);&lt;br /&gt;
 		} while (correctNumber == setNumber);&lt;br /&gt;
 		correctNumber = correctNumber * 10 + setNumber;&lt;br /&gt;
 		do {&lt;br /&gt;
 			setNumber = (int) (Math.random() * 10);&lt;br /&gt;
 		} while (correctNumber / 10 == setNumber&lt;br /&gt;
 				|| correctNumber % 10 == setNumber);&lt;br /&gt;
 		correctNumber = correctNumber * 10 + setNumber;&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	public int inputGuess() {&lt;br /&gt;
 		String input = JOptionPane&lt;br /&gt;
 				.showInputDialog(&amp;quot;Enter three different number\n&amp;quot;);&lt;br /&gt;
 		int guess = Integer.parseInt(input);&lt;br /&gt;
 		return guess;&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	int positionNum(int value, int pos) {&lt;br /&gt;
 		if (pos &amp;amp;lt; 1)&lt;br /&gt;
 			throw new IndexOutOfBoundsException(&amp;quot;pos값은 1이상&amp;quot;);&lt;br /&gt;
 		int a = value % (int) Math.pow(10, pos);&lt;br /&gt;
 		return a / (int) Math.pow(10, pos - 1);&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	public int compare(int aGuess, int cCorrect) {&lt;br /&gt;
 		final int START_POS = 1, END_POS = 3, STRIKE_DELTA = 10, BALL_DELTA = 1;&lt;br /&gt;
 &lt;br /&gt;
 		int result = 0; // 10자리가 strike, 1자리가 ball 값&lt;br /&gt;
 		for (int corPos = END_POS; corPos &amp;amp;gt;= START_POS; corPos--)&lt;br /&gt;
 			for (int guePos = END_POS; guePos &amp;amp;gt;= START_POS; guePos--)&lt;br /&gt;
 				if (positionNum(cCorrect, corPos) == positionNum(aGuess, guePos))&lt;br /&gt;
 					result += (corPos == guePos) ? STRIKE_DELTA : BALL_DELTA;&lt;br /&gt;
 		return result;&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	public void displayResult() {&lt;br /&gt;
 		JOptionPane.showMessageDialog(null, &amp;quot;You are right!\n Answer is &amp;quot;&lt;br /&gt;
 				+ correctNumber);&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	@Test&lt;br /&gt;
 	public void getPositionNum() {&lt;br /&gt;
 		assertEquals(3, positionNum(123, 1));&lt;br /&gt;
 		assertEquals(2, positionNum(123, 2));&lt;br /&gt;
 		assertEquals(1, positionNum(123, 3));&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	@Test&lt;br /&gt;
 	public void test2() {&lt;br /&gt;
 		BaseBall oneGame = new BaseBall();&lt;br /&gt;
 		assertEquals(30, oneGame.compare(123, 123));&lt;br /&gt;
 		assertEquals(10, oneGame.compare(100, 123));&lt;br /&gt;
 		assertEquals(2, oneGame.compare(310, 123));&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>