아하
검색 이미지
생활꿀팁 이미지
생활꿀팁생활
생활꿀팁 이미지
생활꿀팁생활
도덕적인가젤89
도덕적인가젤8921.04.19

자바프로그래밍 급하게 질문하나 할게요 코드좀 작성해서 올려주세요

설명

Vector<Shape>의 벡터를 이용하여 그래픽 편집기를 만들어보자.

본문5.6절과5.7절의 사례로 든 추상 클래스Shape과Line,Rect, Circle클래스 코드를 잘 완성하고 이를 활용하여“삽입“, “삭제“, “모두 보기“, “종료"의4가지 그래픽 편집 기능의 프로그램을 작성하라.

6장 실습문제6번을Vector<Shape>을 이용하여재작성 하는연습이다.

Vector를 이용하면6장 실습문제6번보다 훨씬 간단히 작성됨을 경험할 수 있다.


입력

"삽입"과 "삭제" 옵션을 이용해 벡터의 값들을 제어한다.

ex)

그래픽 에디터 beauty를 실행합니다.

삽입(1), 삭제(2), 모두 보기(3), 종료(4)>>1

Line(1), Rect(2), Circle(3)>>2

삽입(1), 삭제(2), 모두 보기(3), 종료(4)>>1

Line(1), Rect(2), Circle(3)>>3

삽입(1), 삭제(2), 모두 보기(3), 종료(4)>>1

Line(1), Rect(2), Circle(3)>>4

삽입(1), 삭제(2), 모두 보기(3), 종료(4)>>5

삽입(1), 삭제(2), 모두 보기(3), 종료(4)>>3

삽입(1), 삭제(2), 모두 보기(3), 종료(4)>>2

삭제할 도형의 위치>>3

삽입(1), 삭제(2), 모두 보기(3), 종료(4)>>4

출력

"모두 보기" 옵션을 입력 받으면 현재 가지고 있는 값들을 출력한다.

"삭제" 옵션에서 벡터에 없는 값을 삭제하려고 하면 "삭제할 수 없습니다." 출력

"종료" 옵션을 입력 받으면 "beauty를 종료합니다."출력
ex)

잘못 선택하셨습니다.

잘못 입력하셨습니다.

Rect

Circle

삭제할 수 없습니다.

beauty를 종료합니다.

예시 입력 1

그래픽 에디터 beauty를 실행합니다. 삽입(1), 삭제(2), 모두 보기(3), 종료(4)>>1 Line(1), Rect(2), Circle(3)>>2 삽입(1), 삭제(2), 모두 보기(3), 종료(4)>>1 Line(1), Rect(2), Circle(3)>>3 삽입(1), 삭제(2), 모두 보기(3), 종료(4)>>1 Line(1), Rect(2), Circle(3)>>4 삽입(1), 삭제(2), 모두 보기(3), 종료(4)>>5 삽입(1), 삭제(2), 모두 보기(3), 종료(4)>>3 삽입(1), 삭제(2), 모두 보기(3), 종료(4)>>2 삭제할 도형의 위치>>3 삽입(1), 삭제(2), 모두 보기(3), 종료(4)>>4

예시 출력 1

잘못 선택하셨습니다. 잘못 입력하셨습니다. Rect Circle 삭제할 수 없습니다. beauty를 종료합니다.

힌트

class GraphicEditor 의 run() 메소드만 구현하면 됨

55글자 더 채워주세요.
답변의 개수1개의 답변이 있어요!
  • 안녕하세요 4년차 자바 개발자입니다.

    아래에 해당 코드 올려드리겠습니다.

    감사합니다.

    import java.util.Scanner; import java.util.Vector; public class Prac { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Vector<Shape> v = new Vector<Shape>(); Shape shape = null; System.out.println("그래픽 에디터 beauty을 실행합니다."); while(true) { System.out.print("삽입(1), 삭제(2), 모두 보기(3), 종료(4)>>"); int select = sc.nextInt(); switch(select) { case 1: System.out.print("Line(1), Rect(2), Circle(3)>>"); int choice = sc.nextInt(); switch(choice) { case 1: shape = new Line(); break; case 2: shape = new Rect(); break; case 3: shape = new Circle(); break; } v.add(shape); break; case 2: System.out.print("삭제할 도형의 위치>>" ); int position = sc.nextInt(); if(v.size() == 0 || v.size() <= position) System.out.println("삭제할 수 없습니다."); else v.remove(position); break; case 3: for(int i=0; i<v.size(); i++) v.get(i).draw(); break; case 4: System.out.println("beauty을 종료합니다."); sc.close(); return; } } } } abstract class Shape { private Shape next; public Shape() { next = null; } public void setNext(Shape obj) { next = obj; } //링크 연결 public Shape getNext() { return next; } public abstract void draw(); } class Line extends Shape { public void draw() { System.out.println("Line"); } } class Rect extends Shape { public void draw() { System.out.println("Rect"); } } class Circle extends Shape { public void draw() { System.out.println("Circle"); } }