자바 이클립스 코딩테스트 변형

자바 이클립스 코딩테스트 변형

작성일 2022.10.13댓글 0건
    게시물 수정 , 삭제는 로그인 필요

아래는 테스트 답지인데
조금 더 심플하게 할 수는 없나요??
다른 답안도 보고싶어서.... 변형 부탁드립니다!



package src.Test_2021_2;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;

interface Calc {
public int calc();
}

class WelcomePanel extends JPanel{
JLabel title = new JLabel();
WelcomePanel(){
title.setText("자바 피자에 오신것을 환영합니다");
this.add(title);
}
public void setMessage(String msg) {
title.setText(msg);
}
}

class TypePanel extends JPanel implements Calc{
String typeItem[] = {"콤보(25,000원)", "나폴리(19,000원)", "포테이토(22,000원)","불고기(20,000원)"};
JRadioButton typeRB[] = new JRadioButton[typeItem.length];
TypePanel(){
this.setLayout(new GridLayout(typeItem.length,1));
this.setBorder(BorderFactory.createTitledBorder("종류"));
ButtonGroup bg = new ButtonGroup();
for (int i = 0; i < typeItem.length; i++) {
typeRB[i] = new JRadioButton(typeItem[i]);
this.add(typeRB[i]);
bg.add(typeRB[i]);
}
typeRB[0].setSelected(true);
}
public int calc() {
// TODO Auto-generated method stub
int typeCost[] = {25000, 19000, 22000, 20000};
for (int i=0; i<typeCost.length; i++) {
if (typeRB[i].isSelected()) {
return typeCost[i];
}
}
return 0;
}
public void reset() {
// TODO Auto-generated method stub
typeRB[0].setSelected(true);
}
}

class ToppingPanel extends JPanel implements Calc{
String toppingItem[] = {"피망(1,000원)","치즈(1,500원)","페페로니(2,000원)","베이컨(2,500원)", "옥수수(1,000원)"};
JCheckBox toppingCB[] = new JCheckBox[toppingItem.length];

ToppingPanel(){
this.setLayout(new GridLayout(toppingItem.length,1));
this.setBorder(BorderFactory.createTitledBorder("추가 토핑"));
for (int i = 0; i < toppingItem.length; i++) {
toppingCB[i] = new JCheckBox(toppingItem[i]);
this.add(toppingCB[i]);
}
}
public int calc() {
int toppingTotal = 0;
int toppingCost[] = {1000,1500,2000,2500, 1000};
for (int i = 0; i<toppingItem.length; i++) {
if (toppingCB[i].isSelected())
toppingTotal += toppingCost[i];
}
return toppingTotal;
}
public void reset() {
// TODO Auto-generated method stub
for (int i=0; i < toppingItem.length; i++) {
toppingCB[i].setSelected(false);
}
}
}

class SizePanel extends JPanel implements Calc{
String sizeItem[] = {"Small(기본)", "Medium(3,000)","Large(5,000)"};
JRadioButton sizeRB[] = new JRadioButton[sizeItem.length];
SizePanel(){
this.setLayout(new GridLayout(sizeItem.length,1));
this.setBorder(BorderFactory.createTitledBorder("크기"));
ButtonGroup bg = new ButtonGroup();
for (int i = 0; i < sizeItem.length; i++) {
sizeRB[i] = new JRadioButton(sizeItem[i]);
this.add(sizeRB[i]);
bg.add(sizeRB[i]);
}
sizeRB[0].setSelected(true);
}
public int calc() {
// TODO Auto-generated method stub
int sizeCost[] = {0, 3000, 5000};
for (int i=0; i<sizeCost.length; i++) {
if (sizeRB[i].isSelected()) {
return sizeCost[i];
}
}
return 0;
}
public void reset() {
// TODO Auto-generated method stub
sizeRB[0].setSelected(true);
}
}


class DisplayPanel extends JPanel implements ActionListener {
String labelText[] = {"주문금액 (Sub Total) :", "부가가치세 (Tax : 10%) :", "총 합 계 (Total Sum) :", "현금 수령액 (Cash) :"};
JLabel displayLabel[] = new JLabel[labelText.length];
JTextField displayTF[] = new JTextField[labelText.length];
// bonus...
JButton changeBT = new JButton("거스름돈 (Change)");
JTextField changeTF = new JTextField(5);
public DisplayPanel() {
this.setLayout(new GridLayout(0,2));
for (int i=0; i<labelText.length; i++) {
displayLabel[i] = new JLabel(labelText[i], JLabel.CENTER);
//displayLabel[i].setHorizontalAlignment(JLabel.CENTER);
displayTF[i] = new JTextField(5);
this.add(displayLabel[i]);
this.add(displayTF[i]);
}
this.setBorder(BorderFactory.createTitledBorder("계산"));
// bonus...
this.add(changeBT);
this.add(changeTF);
changeBT.addActionListener(this);
}
public void setMessage(String msg) {
double tax = Double.parseDouble(msg)*0.1;
displayTF[0].setText(""+msg);
displayTF[1].setText(""+tax);
displayTF[2].setText(""+(Double.parseDouble(msg)+tax));
}
public void reset() {
// TODO Auto-generated method stub
for (int i=0;i<displayTF.length; i++) {
displayTF[i].setText("");
}
changeTF.setText("");
}

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
double balance = 0;
double cash = 0;
double totalSum = 0;
if (e.getSource() == changeBT) {
if (displayTF[3].getText().equals("")) {
String cashStr = JOptionPane.showInputDialog("현금을 입력하세요!!");
if (cashStr != null) {
displayTF[3].setText(cashStr);
}
}
else {
cash = Double.parseDouble(displayTF[3].getText());
totalSum = Double.parseDouble(displayTF[2].getText());
changeTF.setText(""+(cash - totalSum));
}
}
}
}

public class Pizza extends JFrame implements ActionListener{

String btnText[] = {"주문", "취소"};
JButton Order = new JButton("주문");
JButton Cancel = new JButton("취소");
JPanel panel[] = new JPanel[7];
static int orderNum = 0;

public Pizza(){
this.setTitle("[2021-2] 객체지향프로그래밍 퀴즈 : 20215812 홍길동");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(450, 400);
// 프레임 레이아웃 변경...
this.setLayout(new GridLayout(0,1));
panel[0] = new WelcomePanel();
panel[1] = new TypePanel();
panel[2] = new ToppingPanel();
panel[3] = new SizePanel();
panel[4] = new JPanel();
/// 상위 패널 [5] 생성...
panel[5] = new JPanel();
panel[5].setLayout(new BorderLayout());

panel[5].add(panel[0], BorderLayout.NORTH);
panel[5].add(panel[1], BorderLayout.WEST);
panel[5].add(panel[2], BorderLayout.CENTER);
panel[5].add(panel[3], BorderLayout.EAST);
panel[5].add(panel[4], BorderLayout.SOUTH);
Order.addActionListener(this);
Cancel.addActionListener(this);

panel[4].add(Order);
panel[4].add(Cancel);
///
panel[6] = new DisplayPanel();

this.add(panel[5]);
this.add(panel[6]);
this.setVisible(true);
}

@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
int subTotal = 0;

subTotal = ((ToppingPanel) panel[2]).calc() + ((TypePanel) panel[1]).calc() + ((SizePanel) panel[3]).calc();
if (arg0.getSource() == Order) {
orderNum++;
((WelcomePanel) panel[0]).setMessage("고객님의 주문번호는 "+ orderNum + "번 입니다.");
//// 추가...
((DisplayPanel) panel[6]).setMessage("" + subTotal);
}
if (arg0.getSource() == Cancel) {
((WelcomePanel) panel[0]).setMessage("감사합니다. 다시 주문해 주세요.");
((ToppingPanel) panel[2]).reset();
((TypePanel) panel[1]).reset();
((SizePanel) panel[3]).reset();
//// 추가...
((DisplayPanel) panel[6]).reset();
}

}

}


#자바 이클립스 #자바 이클립스 설치 #자바 이클립스 사용법 #자바 이클립스 다운로드 #자바 이클립스 단축키 #자바 이클립스 다크모드 #자바 이클립스 vscode #자바 이클립스 글씨 크기 #자바 이클립스 실행 #자바 이클립스 삭제

자바 코딩연습 및 인강 노트북 추천

... 윈트북 맥북 상관없습니다 현재 자바 이클립스코딩테스트 문제풀이 및 인강정도만 보고있습니다. 나중에 무거운 개발하게되면 그때는 맥프로 살 예정입니다....

자바 코딩에 필요한 노트북 성능?

이클립스 자바 공부정도만 하려는 노트북 성능이... - 코딩같은건 사양이랑은 관계가 없는건가요? ... 스펙... 성능 테스트 하는 프로그램이 멀티로 돌아서 그런 것이지 실제...

자바 이클립스 파일경로

안녕하세요 코딩을 하다가 제가 파일경로를 설정했는데 이 텍스트 문서가... \\src\\com\\mm\\memoList\\"+filename + ".txt"; 이렇게 수정한 후 테스트 해보세요.

자바 이클립스에서 디버깅은...

... activity?) 테스트 기간동안 밝혀진 문제점을 처음으로 돌아가서 문제 원인을 찾고(분석) 어떻게 수정을 해야 할까(설계)를 결정하여 코딩(개발) 활동으로...

코딩테스트 언어

... 그 중 코딩테스트를 보게되었는데 몇가지 질문이... 만약 파이썬이 아닌 자바를 추천하신다면 인강추천 가능할까요? 위 인강사이트 추천드립니다. 이클립스 개발...

자바는 어디서 코딩하죠

... 그럼 자바는 어디서 코딩해야 되죠?... 자바는 보통 메모장 같은 텍스트 에디터나 이클립스에서 많이... 이제 테스트를 해볼 차례.. 윈도우 시작버튼에서 '실행'을...