๊ด€๋ฆฌ ๋ฉ”๋‰ด

FS_hansol

[Java] Level.2_Trouble Shooting ๋ณธ๋ฌธ

Spring_๋ถ€์บ /Trouble Tang Tang ๐Ÿ”ซ๐Ÿ”ซ

[Java] Level.2_Trouble Shooting

FS29 2025. 7. 14. 12:03

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