FS_hansol
[Java] Level.2_Trouble Shooting ๋ณธ๋ฌธ
1) Trouble Shooting_remove
if (msg.equals("remove")) {
List<Integer> stored = calc.getResults();
if (stored.isEmpty()) {
System.out.println("์ ์ฅ๋ ๊ฒฐ๊ณผ๊ฐ ์์.");
} else {
double removed = stored.remove(0);
System.out.println("์ญ์ ๋ ๊ฒฐ๊ณผ : " + removed);
}
System.out.println();
continue;
}
๊ตฌํํ๊ณ ์ ํ๋ ๋ถ๋ถ
Calculator๋ด๋ถ์ ์ ์ฅ๋ ์ฐ์ฐ๊ฒฐ๊ณผ ๋ฆฌ์คํธ์์ ๊ฐ์ฅ ์ค๋๋ (0๋ฒ ์ธ๋ฑ์ค)๊ฒฐ๊ณผ ํ๋๋ฅผ ์ญ์ ํ๋ ๋ก์ง ๊ตฌํ.
์ญ์ ๋ ๊ฐ์ด ์ฝ์์ ์ถ๋ ฅ๋์ด์ผ ํ๋ค.
๋ฌธ์ ๋ฐ์
remove ํค์๋๋ก ์ญ์ ๋ ๋ถ๋ถ ์ฝ์์ ์ฐํ๋, ์กฐํํด๋ณด๋ฉด ๊ทธ๋๋ก ๋จ์์์.
๋ฐ์ ์์ธ
์ญ์ ๋ ๋์์ผ๋, ์ญ์ ํ ๋ฆฌ์คํธ ๋ด๋ถ์ ๋ฐ์ํ๋ ์ฝ๋๊ฐ ๋๋ฝ๋์ด ์กฐํ ์ ๊ฒฐ๊ณผ๊ฐ ๋จ์์๋ ํ์์ด ๋ฐ์ํ๋ค.
๋ํ doubleํ์ ์ผ๋ก ์ ์ธํ์ฌ ํ์ ๋ ๋ถ์ ์ ํจ์ ๋ฐ๊ฒฌํ์๋ค.
๊ฐ์ ์ฝ๋
if (msg.equals("remove")) {
List<Integer> stored = calc.getResults(); // ๋ณต์ฌ๋ณธ ๊ฐ์ ธ์ค๊ธฐ
if (stored.isEmpty()) {
System.out.println("์ ์ฅ๋ ๊ฒฐ๊ณผ๊ฐ ์์ต๋๋ค.");
} else {
int removed = stored.remove(0); // ์ญ์ ๋ ๊ฐ ๋ฐ๊ธฐ
calc.setResults(stored); // ๋ด๋ถ ๋ฆฌ์คํธ์ ๋ฐ์
System.out.println("์ญ์ ๋ ๊ฒฐ๊ณผ: " + removed);
}
System.out.println();
continue;
}
์ด๋ ๊ฒ ๊ฐ์ ํ ์ด์
- calc.getResults()๋ Calculator ๋ด๋ถ ๋ฆฌ์คํธ์ ๋ณต์ฌ๋ณธ์ ๋ง๋ ๋ค.
- ๋ณต์ฌ๋ณธ์์ remove(0)๋ฅผ ํด๋ ์๋ณธ์๋ ์ ๋ ์ํฅ์ ์ฃผ์ง ์๋๋ค.
- ๋ฐ๋ผ์ ์ญ์ ๋ค์ calc.setResults(๋ณต์ฌ๋ณธ)์ ํธ์ถํด์ผ ์๋ณธ ๋ฆฌ์คํธ๊ฐ ์ค์ ๋ก ๋ฐ๋๊ฒ ๋๋ค.
- stored.remove(0)์ด ๋๋ ค์ฃผ๋ ๊ฐ์ int.
- ์๋ ์ฝ๋์์ double removed๋ก ๋ฐ์์ ํ์ ์ด ๋ง์ง ์๋๋ค.
- int removed๋ก ๋ฐ๊พธ๋ฉด ์ปดํ์ผ ์ค๋ฅ ์์ด ์ ํํ ๊ฐ์ ๋ฐ์ผ ์ ์๋ค.
- App ํด๋์ค๊ฐ Calculator์ ๋ด๋ถ ๋ฆฌ์คํธ(results)๋ฅผ ์ง์ ๊บผ๋ด๊ฑฐ๋ ์์ ํ๋ฉด ์ ๋๋ค.
- ๋์ ์ ๊ณต๋ getResults()/ setResults() ๋ฉ์๋๋ง ์ฌ์ฉํ์ฌ ์์ ํ๊ฒ ์ํ๋ฅผ ์ฝ๊ณ ๋ฐ๊พธ๋ ๊ตฌ์กฐ๋ ์ ์งํด์ผ ํ๋ค.
2)Trouble Shooting_incompatible types
๊ตฌํํ๊ณ ์ ํ๋ ๋ถ๋ถ
์ธํฐํ์ด์ค๋ฅผ ๋์ ํ์ฌ AddOperator, SubtractOperator, ... ๋ฑ ์ฐ์ฐ์๋ฅผ ๋ชจ๋ Operatorํ์ ๋ฐฐ์ด์ ๋ด๊ณ
for๋ฌธ์ผ๋ก ์ผ๊ด ์ํํ๋ฉด์ ๊ฐ ์ฐ์ฐ์์ operate(a,b)๋ฅผ ํธ์ถํ์ฌ ์ฌ์น์ฐ์ฐ ๋ฐ ๋๋จธ์ง ์ฐ์ฐ์ ๋คํ์ฑ์ผ๋ก ์ฒ๋ฆฌํ๋ ค๊ณ ํ๋ค.
๋ฌธ์ ๋ฐ์
์ปดํ์ผ ์๋ฌ ๋ฐ์
incompatible types: AddOperator cannot be converted to Operator
๋ฐ์์์ธ
์ฐ์ฐ์ ํด๋์ค๋ฅผ ์ ์ธํ ๋ implements Operator๋น ํธ๋ฆผ
๋ฐ๋ผ์ AddOperator๋ Operatorํ์ ์ผ๋ก ์ทจ๊ธ๋์ง ๋ชปํด ๋ฐฐ์ด์ ๋ด์ ์ ์์๋ค.
๊ฐ์ ์ฝ๋
// ๋ณ๊ฒฝ ์
public class AddOperator {
public double operate(double a, double b) { return a + b; }
}
// ๋ณ๊ฒฝ ํ: Operator ์ธํฐํ์ด์ค ๊ตฌํ
public class AddOperator implements Operator {
@Override
public char getSymbol() { return '+'; }
@Override
public double operate(double a, double b) {
return a + b;
}
}
// ArithmeticCalculator ์์ฑ์ ํธ์ถ ์์
Operator[] ops = { new AddOperator(), new SubtractOperator(), new MultiplyOperator(),
new DivideOperator(), new ModOperator() };
ArithmeticCalculator ac = new ArithmeticCalculator(ops);
for (Operator op : ops) {
// now op.operate(x, y) ํธ์ถ ๊ฐ๋ฅ
}
์ด๋ ๊ฒ ๊ฐ์ ํ ์ด์
- Operator ์ธํฐํ์ด์ค๋ก ๋ฌถ์ด ๊ด๋ฆฌํ๋ฏ๋ก ์ด์ ๋ก์ง์ ์์ ํ์ง ์๊ณ ์ ์ฐ์ฐ์๋ฅผ ์ถ๊ฐํ ์ ์๋ค.
- ๊ฐ ์ฐ์ฐ์ ํด๋์ค๊ฐ Operator๊ณ์ฝ์ ์ง์ผ ์ผ๊ด๋ API๋ฅผ ์ ๊ณต
- implemetns Operator๋ฅผ ๋น ๋จ๋ฆฌ๋ฉด ์ปดํ์ผ ๋จ๊ณ์์ ์ฆ์ ์ค๋ฅ๋ฅผ ์ฐพ์์ค ์ ์์ด ์์ ์
'Spring_๋ถ์บ > Trouble Tang Tang ๐ซ๐ซ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring] Trouble Gradle (0) | 2025.08.20 |
---|---|
[Spring] newfeedproject_Trouble Shooting(auth) (1) | 2025.08.09 |
[Java] Level.3_Trouble Shooting (0) | 2025.07.17 |
[Java] Level.1_Trouble Shooting (3) | 2025.07.10 |
[Spring] 2์ฃผ์ฐจ-clone trouble (1) | 2025.07.09 |