자바프로그래밍 급하게 질문하나 할게요 코드좀 작성해서 올려주세요
설명
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() 메소드만 구현하면 됨
안녕하세요 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"); } }