반응형

1. 다음과 같이 “Let’s study Java”라는 문자열을 타이틀로 가지고 프레임의 크기가 400 * 200인 스윙 프로그램을 작성하라.

package chapter8;

import javax.swing.*;

import java.awt.*;

public class FrameSample extends JFrame{

FrameSample(){

setTitle("Let's study Java");

setSize(400,200);

setVisible(true);

}

public static void main(String[] args){

FrameSample fs =new FrameSample();

fs.setDefaultCloseOperation(fs.EXIT_ON_CLOSE);

}

}

실행결과


2. BorderLayout을 사용하여 컴포넌트 사이의 수평 간격이 5픽셀, 수직 간격이 7 픽셀이 되도록 다음과 같은 스윙 응용 프로그램을 작성하라. 

package chapter8;

import javax.swing.*;

import java.awt.*;

public class BorderLayoutSample extends JFrame{

BorderLayoutSample(){

setTitle("BorderLayout Practice");

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Container contentPane = getContentPane();

contentPane.setLayout(new BorderLayout(5,7));

contentPane.add(new JButton("North"), BorderLayout.NORTH);

contentPane.add(new JButton("West"), BorderLayout.WEST);

contentPane.add(new JButton("Center"), BorderLayout.CENTER);

contentPane.add(new JButton("East"), BorderLayout.EAST);

contentPane.add(new JButton("South"), BorderLayout.SOUTH);

setSize(400,200);

setVisible(true);

}

public static void main(String[] args){

BorderLayoutSample bl = new BorderLayoutSample();

}

}

실행결과


3. 컨텐트팬에 FlowLayout 배치 관리자를 지정하고 그림과 같이 JLabel과 JButton 컴포넌트를 이용하여 산술문을 출력하는 스윙 프로그램을 작성하라.

package chapter8;

import java.awt.*;

import javax.swing.*;

public class FlowLayoutSample extends JFrame {

public FlowLayoutSample() {

setTitle("FlowLayout Practice");

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Container c = getContentPane();

c.setLayout(new FlowLayout());

c.add(new JLabel("100"));

c.add(new JLabel("+"));

c.add(new JLabel("200"));

c.add(new JButton("="));

c.add(new JLabel("300"));

setSize(400,100);

setVisible(true);

}

public static void main(String[] args) {

FlowLayoutSample fl= new FlowLayoutSample();

}

}

실행결과


4. 예제 8-5의 소스코드를 수정하여 각 버튼의 배경색을 다음 그림과 같이 설정하라.

package chapter8;

import javax.swing.*;

import java.awt.*;

public class TenColorButtonFrame extends JFrame{

TenColorButtonFrame(){

setTitle("Ten Color Button Frame");

setSize(500,200);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Container c = getContentPane();

c.setLayout(new GridLayout(1,10));


for(int i=0;i<10;i++){

Color [] color = {Color.RED, Color.ORANGE, Color.YELLOW,

                Color.GREEN, Color.CYAN, Color.BLUE,

                Color.MAGENTA, Color.GRAY, Color.PINK, Color.LIGHT_GRAY};

String text = Integer.toString(i);

JButton button = new JButton(text);

button.setOpaque(true);

button.setBackground(color[i]);

c.add(button);

}

setVisible(true);

}

public static void main(String[] args){

TenColorButtonFrame gl = new TenColorButtonFrame();

}

}

실행결과


5. GridLayout을 이용하여 다음 그림과 같이 Color.WHITE, Color.Gray, Color.RED 등 Color 클래스에 선언된 16개의 색을 배경색으로 하는 4 * 4 판을 구성하라.

package chapter8;

import java.awt.*;

import javax.swing.*;

public class GridLayoutSamples extends JFrame {

public GridLayoutSamples() {

setTitle("4x4 Color Frame");

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Container c = getContentPane();

c.setLayout(new GridLayout(4, 4));

JLabel [] label = new JLabel [16];

Color [] color = {Color.RED, Color.ORANGE, Color.YELLOW, Color.GREEN,

Color.CYAN, Color.BLUE, Color.MAGENTA, Color.GRAY,

Color.PINK, Color.LIGHT_GRAY, Color.WHITE, Color.DARK_GRAY,

Color.BLACK, Color.ORANGE, Color.BLUE,Color.MAGENTA}; 


for(int i=0; i<label.length; i++) {

label[i] = new JLabel(Integer.toString(i));

label[i].setOpaque(true);

label[i].setBackground(color[i]);

c.add(label[i]);

}

setSize(500,200);

setVisible(true);

}

public static void main(String[] args) {

GridLayoutSamples gl = new GridLayoutSamples();

}


}

실행결과



6. 20개의 10 * 10 크기의 JLabel 컴포넌트가 프레임 내의 (50,50)에서 (250,250)영역 내 랜덤한 위치에 출력되도록 스윙 프로그램을 작성하라. 프레임의 크기를 300 *300으로 하고, JLabel의 배경색은 모두 파란색으로 하라.

package chapter8;

import javax.swing.*;

import java.awt.*;

public class RandomLabels extends JFrame {

RandomLabels(){

setTitle("Random Labels");

setSize(300,300);

Container c = new Container();

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

for(int i=0;i<20;i++){

JLabel label = new JLabel();

int x = (int)(Math.random()*200) + 50;

int y = (int)(Math.random()*200) + 50;

label.setBounds(x, y, 10, 10);

label.setOpaque(true);;

label.setBackground(Color.BLUE);

c.add(label);

}

this.add(c);

setVisible(true);

}

public static void main(String[] args){

RandomLabels rl = new RandomLabels();

}

}

실행결과



반응형
반응형

1. Scanner를 사용하여 5개의 실수 값을 사용자로부터 입력받아 벡터에 저장하라. 그러고 나서 벡터를 검색하여 가장 큰 수를 출력하는 프로그램을 작성하라.

코드

package chapter7;

import java.util.*;

public class VectorBig {

public static void main(String[] args) {

Vector<Double> v = new Vector<Double>();

Scanner scanner = new Scanner(System.in);

for (int i = 0; i < 5; i++) {

double d = scanner.nextDouble();

v.add(d);

}

double max = v.get(0);

for(int i=0;i<5;i++){

if(max < v.get(i)) max = v.get(i);

}

System.out.println("가장 큰 수는 " + max);

}

}

실행결과


2. Scanner를 이용하여 학점(‘’, ‘’, ‘’, ‘’, ‘’)을 5개만 8자로 입력받아 ArrayList에 저장하라. 그리고 나서 다시 ArrayList를 검색하여 5개의 학점을 점수로 변환하여 출력하는 프로그램을 작성하라.

코드

package chapter7;

import java.util.*;

public class ArrayListCode {

public static void main(String[] args) {

ArrayList<String> al = new ArrayList<String>();

Scanner scanner = new Scanner(System.in);

System.out.print("빈 칸으로 분리하여 5개의 학점을 입력(A/B/C/D/F)>>");

for (int i = 0; i < 5; i++) {

String s = scanner.next();

al.add(s);

switch (s) {

case "A":

System.out.print("4.0" + " ");

break;

case "B":

System.out.print("3.0" + " ");

break;

case "C":

System.out.print("2.0" + " ");

break;

case "D":

System.out.print("1.0" + " ");

break;

case "F" :

System.out.print("0.0" + " ");

break;

}

}

}

}

실행결과


3. 5개의 나라 이름과 인구를 입력받아 해시맵에 저장하고, 가장 인구가 많은 나라를 검색하여 출력하는 프로그램을 작성하라. 이때 다음 해시맵을 이용하라.

코드

package chapter7;

import java.util.*;

public class HashMapNation {

public static void main(String[] args){

System.out.println("나라 이름과 인구를 5개 입력하세요(예 : Korea 5000)");

HashMap<String, Integer> h = new HashMap<String,Integer>();

Scanner scanner = new Scanner(System.in);

for(int i=0;i<5;i++){

System.out.print("나라 이름, 인구 >>");

String nation = scanner.next();

int population = scanner.nextInt();

h.put(nation,population);

}

int max = 0;

String nation = "";

Set<String> names = h.keySet();

Iterator<String> it = names.iterator();

while(it.hasNext()){

String name = it.next();

int n = h.get(name);

if(max < n){

max = n;

nation = name;

}

}

System.out.println("제일 인구가 많은 나라는 (" + nation +"," + max +")");

}

}

실행결과



4. 한 어린이의 키를 2000년부터 209년 사이에 1년 단위로 입력받아 벡터에 저장하라. 그리고 가장 키가 많이 자란 연도를 출력하라.

코드

package chapter7;

import java.util.*;

public class TallManager {

public static void main(String[] args){

Vector<Integer> v = new Vector<Integer>();

Scanner scanner = new Scanner(System.in);

System.out.println("2000 ~ 2009년 까지 1년단위로 키(cm)를 입력>>");

for(int i = 0; i <10;i++)

v.add(scanner.nextInt());

int max = v.get(1) - v.get(0);

int year = 0;

for(int i=0;i<9;i++){

int x = v.get(i+1) - v.get(i);

if(max<x){

max = x;

year = 2000 +i;

}

}

System.out.println("가장 키가 많이 자란 년도는 " + year + "년 " + max +"cm");

}

}

실행결과



5. Location 클래스는 2차원 평면에서 하나의 위치(x,y)를 표현한다. Location 객체로 쥐가 이동한 각 위치를 저장하고 이들로부터 총 이동 거리를 구하고자 한다. ArrayList 컬렉션에 쥐의 위치(Location 객체)를 5개 입력받아 삽입한 후 총 8이를 구하라. 시작위치는 (0,0)이며, (0,0)위치로 돌아온다.

코드

package chapter7;

import java.util.*;

class Location {

private int x, y;

public Location() {}

public Location(int x, int y) {this.x = x; this.y = y;}

public int getX() {return x;}

public int getY() {return y;}

}

public class TravelManager {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

ArrayList<Location> al = new ArrayList<Location>();

System.out.println("쥐가 이동한 위치(x,y)를 5개 입력하라.");

al.add(new Location(0, 0));

for (int i = 0; i < 5; i++) {

System.out.print(">>");

al.add(new Location(scanner.nextInt(), scanner.nextInt()));

}

al.add(new Location(0, 0));

double sum, tz = 0;

for (int i = 1; i < al.size(); i++) {

Location p = al.get(i - 1);// 이전 위치

double x = p.getX();

double y = p.getY();


Location p2 = al.get(i);// 현재 위치

double x2 = p2.getX();

double y2 = p2.getY();


double tx = x2 - x;

double ty = y2 - y;


sum = (tx * tx) + (ty * ty); // 피타고라스 정리

tz = tz + Math.sqrt(sum); // 제곱근, 이동거리 누적

}

System.out.println("총 이동 거리는 " + tz);

}

}

실행결과


6.  고객의 이름과 포인트 점수를 관리하는 프로그램을 해시맵을 이용하여 작성하라. 이 프로그램은 고객의 이름과 포인트를 누적하여 관리한다. 한 고개의 입력이 끝나면 현재까지의 모든 고객의 포인트 점수를 출력한다.

코드

package chapter7;

import java.util.*;

public class CustomManager {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

HashMap<String, Integer> h = new HashMap<String, Integer>();

System.out.println("** 포인트 관리 프로그램입니다 **");

while (true) {

System.out.print("이름과 포인터 입력>>");

String name = scanner.next();

int point = scanner.nextInt();

if (h.containsKey(name)) { 

h.put(name, h.get(name) + point);

} else {

h.put(name, point);

}

Set<String> key = h.keySet();

Iterator<String> it = key.iterator();

while (it.hasNext()) {

String n = it.next();

int p = h.get(n);

System.out.print("(" + n + "," + p + ")");

}

System.out.println();

}

}

}

실행결과


반응형
반응형

1. 다음 main()의 실행 결과 클래스명과 점 값을 연결하여 “MyPoint(3,20)”이 출력되도록 MyPoint 클래스를 작성하라.

코드

package chapter6;

public class MyPoint {

int x,y;

MyPoint(int x, int y) {

this.x = x; this.y = y;

}

public String toString() { 

return getClass().getName() + "(" + x + "," + y+ ")";

}

public static void main(String [] args) {

MyPoint a = new MyPoint(3,20);

System.out.println(a);

}

}

실행결과


2. Scanner를 이용하여 한 라인을 읽고, 공백으로 분리된 어절이 몇 개인지 출력을 반복하는 프로그램을 작성하라. "exit"이 입력되면 종료한다.

코드

package chapter6;

import java.util.Scanner;

import java.util.StringTokenizer;

public class WordCount {

    public static void main(String[] args)

    {

        Scanner scan = new Scanner(System.in);

        while(true)

        {

            String sen = scan.nextLine();

            if(sen.equals("exit"))

            {

                System.out.print("종료합니다...");

                scan.close(); 

                break;

            }

            StringTokenizer st = new StringTokenizer(sen, " ");

            int n = st.countTokens();

            System.out.println("어절 개수는 " + n);

        }

    }

}

실행결과


3. 1에서 3까지의 난수를 3개 생성한 뒤 나란히 한 줄에 출력하라. 모두 같은 수가 나올 때까지 반복 출력하고, 모두 같은 수이면 "성공"을 출력하고 종료하는 프로그램을 작성하라.

코드

package chapter6;

public class Gambling {

public static void main(String[] args) {

int [] n = new int[3];


while(true) {

for(int i=0;  i<n.length; i++) {

n[i] = (int)(Math.random()*3 + 1);

System.out.print(n[i]+"\t");

}

System.out.println();

if(n[0] == n[1] && n[1] == n[2]) {

System.out.print("성공");

break;

}

}

}

}

실행결과


4. 다음과 같이 +로 연결된 덧셈 식을 입력받아 덧셈 결과를 출력하는 프로그램을 작성하라. StringTokenizer와 Integer.parseInt(), String의 trim()을 활용하라.

코드

package chapter6;

import java.util.Scanner;

import java.util.StringTokenizer;

public class Addition {

    public static void main(String[] args){

        Scanner scanner = new Scanner(System.in);

        String a = scanner.nextLine();

        StringTokenizer st = new StringTokenizer(a, "+");

        int n = st.countTokens();

        int [] c = new int[n];

        int sum = 0;

        while(st.hasMoreTokens()){

            for(int i=0; i<n; i++){

                String token = st.nextToken();

                String b = token.trim();

                c[i] = Integer.parseInt(b);

                sum += c[i];

            }

        }

        System.out.print("합은  " + sum);

        scanner.close();

    }

}

실행결과

5. 다음 코드를 수정하여 Adder 클래스는 util 패키지에, Main 클래스는 app패키지에 작성하여 응용프로그램을 완성하고 실행시켜라.

코드

//app 패키지

package app;


import util.Adder;



public class Main {

public static void main(String[] args) {

Adder adder = new Adder(2, 5);

System.out.println(adder.add());

}

}


//util 패키지

package util;


public class Adder {

private int x, y;

public Adder(int x, int y) { this.x = x; this.y = y; }

public int add() { return x + y; }

}

실행결과

6. Math.random()의 난수 발생기를 이용하여 사용자와 컴퓨터가 하는 가위바위보 게임을 만들어보자. 가위, 바위, 보는 각각 1, 2, 3 키이다. 사용자가 1, 2 ,3 키 중 하나를 입력하면 동시에 프로그램에서 난수 발생기를 이용하여 1, 2, 3 중에 한 수를 발생시켜 컴퓨터가 낸 것을 결정한다. 그리고 사용자와 컴퓨터 둘 중 누가 이겼는지를 판별하여 승자를 출력한다.


코드

package chapter6;


import java.util.Scanner;


public class Kawibawibo 

{

    public static void main(String[] args)

    {

        Scanner scanner = new Scanner(System.in);

        String []rps = {"가위", "바위", "보"};

        while(true)

        {

            System.out.println("가위(1), 바위(2), 보(3), 끝내기(4)>>");

            int i = scanner.nextInt() - 1;

            int ran = (int)(Math.random()*3);

            

            if(i >= 3)

            {

                System.exit(0);

                break;

            }

            

            System.out.println("사용자 " + rps[i] + " : " + "컴퓨터 " + rps[ran]);

            if((i + 2) % 3 == ran)

                System.out.println("사용자가 이겼습니다.");

            else if(i == ran)

                System.out.println("비겼습니다.");

            else

                System.out.println("컴퓨터가 이겼습니다.");

        }        

        scanner.close();

    }

}

실행결과


반응형
반응형

1. 원을 표현하는 다음 Circle 클래스가 있다.

class Circle {

private int radius;

public Circle(int radius){this.radius = radius;}

public int getRadius(){return radius;}

}

Circle 클래스를 상속받은 NamedCircle 클래스를 작성하여, 다음 main()을 시행할 때 다음 실행 결과와 같이 출력되도록 하라.

public static void main(String[] args){

NamedCircle w = new NamedCircle(5,"waffle");

w.show();

}

코드

package chapter5;


class Circle {

private int radius;

public Circle(int radius){this.radius = radius;}

public int getRadius(){return radius;}

}

public class NamedCircle extends Circle{

private String name;

NamedCircle(int radius, String name) {

super(radius);

this.name = name;

}

public void show() {

System.out.println(name + ", 반지름 = " + getRadius());

}

public static void main(String[] args){

NamedCircle w = new NamedCircle(5,"waffle");

w.show();

}

}

실행결과

2. 인터페이스 AdderInterface의 코드는 다음과 같다.

interface AdderInterface{

int add(int x, int y);

int add(int n);

}

AdderInterface를 상속받은 클래스 MyAdder를 작성하여, 다음 main()을 실행할 때 아래 실행결과와 같이 출력되도록 하라.

public static void main(String[] args){

MyAdder adder = new MyAdder();

System.out.println(adder.add(5,10));

System.out.println(adder.add(10));

}


코드

package chapter5;

interface AdderInterface{

int add(int x, int y);

int add(int n);

}

public class MyAdder implements AdderInterface{

@Override

public int add(int x,int y){

return x+y;

}

public int add(int n) {

// TODO Auto-generated method stub

int sum = 0;

for(int i=0; i <=n;i++)

sum +=i;

return sum;

}

public static void main(String[] args){

MyAdder adder = new MyAdder();

System.out.println(adder.add(5,10));

System.out.println(adder.add(10));

}

}


실행결과



3. 다음 코드와 실행결과를 참고하여 추상 클래스 Calculator를 상속받은 Adder와 Subtracter 클래스를 작성하라.

import java.util.Scanner;

abstract class Calculator{

protected int a,b;

abstract protected int calc();

protected void input(){

Scanner scanner = new Scanner(System.in);

System.out.print("두개의 정수를 입력하세요>>");

a = scanner.nextInt();

b = scanner.nextInt();

}

public void run(){

input();

int res = calc();

System.out.println("계산된 값은 " + res );

}

}

public class App {

public static void main(String[] args){

Adder adder = new Adder();

Subtracter sub = new Subtracter();

adder.run();

sub.run();

}

}

코드

package chapter5;

import java.util.Scanner;


abstract class Calculator {

protected int a, b;

protected void input() {

Scanner scanner = new Scanner(System.in);

System.out.print("정수 2개를 입력하세요>>");

a = scanner.nextInt();

b = scanner.nextInt();

}

public void run() {

input();

int res = calc();

System.out.println("계산된 값은 " + res);

}

abstract protected int calc(); // 추상 메소드 

}


class Adder extends Calculator {

public int calc() {

return a + b;

}

}


class Subtracter extends Calculator {

public int calc() {

return a - b;

}

}


public class App {

public static void main(String[] args) {

Adder adder = new Adder();

Subtracter sub = new Subtracter();

adder.run();

sub.run();

}


}

실행결과


4. 2차원 상의 한 점을 표현하는 Point 클래스는 다음과 같다.

class Point{

private int x,y;

public Point(int x, int y){this.x = x; this.y=y;}

public int getX(){return x;}

public int getY(){return y;}

protected void move(int x, int y){ this.x =x; this.y=y;}

}

다음 main()을 실행하여 결과가 그림과 같도록 Point를 상속받는 ColorPoint 클래스(main() 포함)를 작성하라.

코드

package chapter5;

class Point{

private int x,y;

public Point(int x, int y){this.x = x; this.y=y;}

public int getX(){return x;}

public int getY(){return y;}

protected void move(int x, int y){ this.x =x; this.y=y;}

}

public class ColorPoint extends Point {

private String color;

ColorPoint(int x, int y, String color) {

super(x, y);

this.color =color;

}

void setPoint(int x, int y) {

move(x, y);

}

void setColor(String color) { this.color = color; }

void show() {

System.out.println(color + "색으로" + "(" + getX() + "," + getY() + ")");

}

public static void main(String[] args) {

ColorPoint cp = new ColorPoint(5, 5,"YELLOW");

cp.setPoint(10, 20);

cp.setColor("GREEN");

cp.show();


}

}

실행결과


5. 다음 StackInterface는 문자열을 푸시하고 팝 할 수 있는 스택에 대한 스펙을 정의하고 있다. StackInterface를 상속받는 StringStack 클래스를 구현하라. 그리고 StackManager 클래스에 main() 메소드를 작성하여 StringStack 객체를 생성하고, 사용자로부터 문자열 5개를 읽어 스택 객체를 저장하고, 다시 팝하여 읽은 반대순으로 출력하여라.

interface StackInterface { 

   int length(); 

   String pop(); 

   boolean push(String ob); 

코드

package chapter5;

import java.util.Scanner; 

// StackInterface 인터페이스 정의 

interface StackInterface { 

   int length(); 

   String pop(); 

   boolean push(String ob); 

// StackInterface를 상속받는 StringStack 클래스 정의 

class StringStack implements StackInterface { 

   String stack[]; 

   private int top = 0; 

   public StringStack() { 

      stack = new String[5]; 

   } 

   @Override 

   public int length() { 

      return top + 1; 

   } 

   @Override 

   public String pop() { 

      return stack[--top]; 

   } 

   @Override 

   public boolean push(String ob) { 

      if (top == 5) return false; 

      else stack[top++] = ob; 

      return true; 

   } 

class StackManager { 

   public static void main(String[] args) { 

      StringStack stack = new StringStack(); 

      Scanner sc = new Scanner(System.in); 

      for (int loop = 0; loop < 5; loop++) { 

         System.out.print("Input " + (loop+1) + " : "); 

         String inputStr = sc.next(); 

         stack.push(inputStr); 

      } 

      for (int loop = 0; loop < 5; loop++) { 

         System.out.println(stack.pop()); 

      } 

   } 

실행결과


6. 간단한 그래픽 편집기를 만들어보자. 본문 5.6절 메소드 오버라이딩과 5.7절의 추상 클래스의 설명 중에 Line, Rect, Circle 클래스 코드를 활용하여, 다음 실행결과처럼 동작하는 프로그램을 작성하라.


코드

package chapter5;

import java.util.Scanner;

abstract class DObject {

abstract public void draw();

}

class Figure extends DObject {

String type;


public Figure() {

type = "";

}

public void draw() {

switch (type) {

case "Line":

System.out.println("Line");

break;

case "Rect":

System.out.println("Rect");

break;

case "Circle":

System.out.println("Circle");

break;

}

}

}

public class GraphicEditor {

public static void main(String[] args) {

int i = 0;

Menu M = new Menu();

while (true) {

Scanner scanner = new Scanner(System.in);

System.out.print("삽입(1), 삭제(2), 모두보기(3), 종료(4) >>");

int select = scanner.nextInt();

switch (select) {

case 1:

M.Insert(i);

i++;

break;

case 2:

M.Delete();

break;

case 3:

M.View();

break;

case 4:

M.Exit();

break;

default:

System.out.println("잘못 입력하셨습니다");


}

}

}

}

// 메뉴 클래스

class Menu {

Scanner rd = new Scanner(System.in);

Figure f[] = new Figure[10];

public Menu() {

for (int i = 0; i < f.length; i++)

f[i] = new Figure();

}

void Insert(int i) {

System.out.print("도형 종류  Line(1), Rect(2), Circle(3) >>");

int num = rd.nextInt();

switch (num) {

case 1:

f[i].type = "Line";

break;

case 2:

f[i].type = "Rect";

break;

case 3:

f[i].type = "Circle";

break;

default:

System.out.println("잘못 입력하셨습니다.");

}

}

void Delete() {

System.out.print("삭제할 도형의 위치 >>");

int num = rd.nextInt();

if (f[num - 1].type.equals(""))

System.out.println("삭제할 수 없습니다");

f[num - 1].type = "";

}

void View() {

for (int i = 0; i < f.length; i++) {

if (f[i].equals("")) {

} else

f[i].draw();

}

}

void Exit() {

System.exit(0);

}

}

실행결과



반응형
반응형

1. 아래의 실행결과와 같이 출력하는 다음 main()을 가진 Song 클래스를 작성하라. Song 클래스는 노래 제목 title 필드, 생성자, getTitle() 메소드로 구성된다.

public static void main(String[] args) {
Song mySong = new Song("Let it go");
Song yourSong = new Song("강남스타일");
System.out.println("내 노래는 " + mySong.getTitle());
System.out.println("너 노래는 " + yourSong.getTitle());
}


public class Song {

private String title;
public Song(String title){
this.title = title;
}
private String getTitle() {
return title;
}

public static void main(String[] args) {
Song mySong = new Song("Let it go");
Song yourSong = new Song("강남스타일");
System.out.println("내 노래는 " + mySong.getTitle());
System.out.println("너 노래는 " + yourSong.getTitle());
}
}


2. 다음은 이름(name 필드)과 전화번호(tel 필드)를 가진 Phone 클래스이다. 이름과 전화번호를 입력받아 2개의 Phone 객체를 생성하고, 출력하는 main() 메소드를 작성하라.

public class Phone {
private String name;
private String tel;
public Phone(String name, String tel){
this.name = name;
this.tel = tel;
}
public String getName() {return name;}
public String getTel() {return tel;}
}


package chapter4;
import java.util.Scanner;

public class Phone {
private String name;
private String tel;
public Phone(String name, String tel){
this.name = name;
this.tel = tel;
}
public String getName() {return name;}
public String getTel() {return tel;}
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.print("이름과 전화번호 입력>>");
Phone phone1 = new Phone(scanner.next(), scanner.next());
System.out.print("이름과 전화번호 입력>>");
Phone phone2 = new Phone(scanner.next(),scanner.next());
System.out.println(phone1.getName() + "의 번호 " + phone1.getTel());
System.out.println(phone2.getName() + "의 번호 " + phone2.getTel());
scanner.close();
}
}


3. 사각형을 표현하는 다음 Rect 클래스를 활용하여, Rect 객체 배열을 생성하고, 사용자로부터 4개의 사각형을 입력받아 배열에 저장한 뒤, 배열을 검색하여 사각형 면적의 합을 출력하는 main() 메소드를 가진 Rect Array 클래스를 작성하라.

class Rect {
private int width, height;
public Rect(int width, int height) { this.width = width; this.height = height; }
public int getArea() { return width*height; }
}

package chapter4;
import java.util.Scanner;

class Rect {
private int width, height;
public Rect(int width, int height) { this.width = width; this.height = height; }
public int getArea() { return width*height; }
}

public class RectArray {
public static void main(String [] args) {
Scanner scanner = new Scanner(System.in);
Rect [] r = new Rect[4]; // 
for(int i=0; i<r.length; i++) {
System.out.print(i+1);
System.out.print(" 너비와 높이 >>");
int width = scanner.nextInt();
int height = scanner.nextInt();
r[i] = new Rect(width, height);
}
System.out.println("저장하였습니다...");
int sum = 0;
for(int i=0; i<r.length; i++) 
sum += r[i].getArea();

System.out.println("사각형의 전체 합은 " + sum);
}
}



4. 이름과 전화번호 필드, 생성자 및 필요한 메소드를 가진 Phone 클래스를 작성하고, 다음 실행 사례와 같이 작동하도록 main()을 가진 PhoneManager 클래스를 작성하라. 한 사람의 전화번호는 하나의 Phone 객체로 다룬다.
package chapter4;
import java.util.Scanner;
class Phone {
String name;
String tel;

public Phone(String name, String tel) {
this.name = name;
this.tel = tel;
}
public String getName() {return name;}
public String getTel() {return tel;}
}

public class PhoneManager {
@SuppressWarnings("unused")
public static void main(String[] args) {
System.out.print("인원수 >> ");
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
Phone[] phone = new Phone[n];

for (int i = 0; i < n; i++) {
System.out.print("이름과 전화번호(번호는 연속적으로 입력) >> ");
phone[i] = new Phone(scanner.next(), scanner.next());
}
System.out.println("저장되었습니다");
while (true) {
System.out.print("검색할 이름 >> ");
String string = scanner.next();
if (string.equals("exit"))
break; 
for (int i = 0; i < n; i++) {
if (string.equals(phone[i].name)) {
System.out.println(string + "의 번호는 " + phone[i].tel + "입니다.");
break;
}
if(i==n-1)
System.out.println(string + "이 없습니다. ");
}
}
scanner.close();
}
}



5. CircleManager는 static 메소드를 가진 클래스이다. StaticTest 클래스는 static 메소드를 활용하는 사례를 보여준다. 실행 결과를 참고하여 코드를 완성하라.
package chapter4;
class Circle {
private int radius;
public Circle(int radius) { this.radius = radius; }
public int getRadius() { return this.radius; }
public void setRadius(int radius) { this.radius = radius; }
}
class CircleManager { 
static void copy(Circle src, Circle dest) { 
dest.setRadius(src.getRadius()); 
}
static boolean equals(Circle a, Circle b) { 
if (a.getRadius() == b.getRadius())
return true;
else
return false;
}
}
public class StaticTest {
public static void main(String[] args) {
Circle pizza = new Circle(5);
Circle waffle = new Circle(1);
boolean res = CircleManager.equals(pizza, waffle); 
if (res == true)
System.out.println("pizza와 waffle 크기 같음");
else
System.out.println("pizza와 waffle 크기 다름");
CircleManager.copy(pizza, waffle); 
res = CircleManager.equals(pizza, waffle); 
if (res == true)
System.out.println("pizza와 waffle 크기 같음");
else
System.out.println("pizza와 waffle 크기 다름");
}
}


6. 다음은 가로 세로로 구성되는 박스를 표현하는 Box 클래스와 이를 이용하는 코드이다. Box의 draw()는 fill 필드에 지정된 문자로 자신을 그린다. 실행 결과를 보면서 코드를 완성하라.
package chapter4;

public class Box {
private int width, height;
private char fillChar;
public Box(){
this(10,1);
}
public Box(int width, int height){
this.width = width;
this.height = height;
}
public void draw(){
for(int i=0;i<height;i++){
for(int j=0;j<width;j++)
System.out.print(fillChar);
System.out.println();
}
}
public void fill(char c){
this.fillChar = c;
}
public static void main(String[] args){
Box a = new Box();
Box b = new Box(20,3);
a.fill('*');
b.fill('%');
a.draw();
b.draw();
}
}




반응형
반응형

1. 영문 소문자 하나 입력받고 그 문자보다 알파벳 순서가 낮은 모든 문자를 출력하는 프로그램을 작성하라.

package chapter3;

import java.util.Scanner;

public class 실습문제1 {

public static void main(String args[]) {

System.out.print("알파벳 한 문자를 입력하세요 >>");

Scanner scanner = new Scanner(System.in);

String s = scanner.next();

char c = s.charAt(0);

int n =(int) c;

for(int i = 97; i<=n; i++){

for(int j =i;j<n;j++){

char nC= (char) j;

System.out.print(nC);

}

System.out.println();

}   

}

}

2. 정수 10개를 입력받아 배열에 저장한 후, 배열을 검색하여 3의 배수만 골라 출력하는 프로그램을 작성하라.

package chapter3;

import java.util.Scanner;

public class 실습문제2 {

public static void main(String args[]) {

Scanner scanner = new Scanner(System.in);

System.out.print("정수 10개 입력 >>");

int [] n = new int [10];

int i;

for(i=0;i<n.length; i++){

n[i] = scanner.nextInt();

if(n[i] %3 == 0 )

System.out.print(n[i] + " ");

}

System.out.println();

}

}

3. 정수를 입력받아 짝수이면 “짝” 홀수이면 “홀”을 출력하는 프로그램을 작성하라. 사용자가 정수를 입력하지 않는 경우에는 프로그램을 종료하라. 정답을 통해 try – catch- finally를 사용하는 정통적인 코드를 볼 수 있다.

package chapter3;

import java.util.InputMismatchException;

import java.util.Scanner;

public class 실습문제3 {

public static void main(String agrs[]){

Scanner scanner = new Scanner(System.in);

System.out.print("정수를 입력하세요.>>");

try{

int n = scanner.nextInt();

if(n %2 == 0) System.out.println("짝수");

else System.out.println("홀수");

}

catch(InputMismatchException n1){

System.out.println("수를 입력하지 않아 프로그램이 종료됩니다");

}

}

}

4. ‘일’, ‘월’, ‘화’, ‘수’, ‘목’, ‘금’, ‘토’ 로 초기화된 문자 배열 day를 선언하고, 사용자로부터 정수를 입력받아 7(배열 day의 크기)로 나눈 나머지를 인덱스로 하여 배열 day에 저장된 문자를 출력하라. 음수가 입력되면 프로그램을 종료하라. 아래 실행결과와 같이 예외 처리하라.

package chapter3;

import java.util.InputMismatchException;

import java.util.Scanner;

public class 실습문제4 {

public static void main(String args[]) {

char[] day = { '일', '월', '화', '수', '목', '금', '토' };

Scanner scanner = new Scanner(System.in);

while (true) {

int n = 0;

System.out.print("정수를 입력하세요>>");

try {

n = scanner.nextInt();

switch (n % 7) {

case 0:

System.out.println("일");

break;

case 1:

System.out.println("월");

break;

case 2:

System.out.println("화");

break;

case 3:

System.out.println("수");

break;

case 4:

System.out.println("목");

break;

case 5:

System.out.println("금");

break;

case 6:

System.out.println("토");

break;

}

} catch (InputMismatchException e) {

System.out.println("경고! 수를 입력하지 않았습니다");

break;

}

if(n < 0){

System.out.println("프로그램 종료");

break;

}

}

scanner.close();

}

}


실행결과

5. 정수를 10개 입력받아 배열에 저장하고 증가 순으로 정렬하여 출력하라.

package chapter3;

import java.util.Scanner;

public class 실습문제5 {

public static void main(String args[]){

int [] n = new int [10];

System.out.print("정수 10개 입력>>");

Scanner scanner = new Scanner(System.in);

for(int i=0; i<n.length; i++){

n[i] = scanner.nextInt();

}

for(int i=n.length-1;i>=0;i--){

for(int j=0;j<i;j++)

if(n[j] > n[j+1]){

int temp = n[j];

n[j] = n[j+1];

n[j+1] = temp;

}

}

for(int i=0;i<n.length;i++)

System.out.print(n[i] + " ");

System.out.println();

scanner.close();

}

}


6. 다음과 같이 영어와 한글의 짝을 이루는 2개의 배열을 만들고, 사용자로부터 영어 단어를 입력받아 한글을 출력하는 프로그램을 작성하라. “exit”을 입력하면 프로그램을 종료하라.

package chapter3;

import java.util.Scanner;

public class 실습문제6 {

public static void main(String args[]) {

String eng[] = { "student", "love", "java", "happy", "future" };

String kor[] = { "학생", "사랑", "자바", "행복한", "미래" };

Scanner scanner = new Scanner(System.in);

while (true) {

System.out.print("영어 단어를 입럭하세요>>");

String s = scanner.next();

if (s.equals("student"))

System.out.println("학생");

else if (s.equals("love"))

System.out.println("사랑");

else if (s.equals("java"))

System.out.println("자바");

else if (s.equals("happy"))

System.out.println("행복한");

else if (s.equals("future"))

System.out.println("미래");

else if (s.equals("exit")) {

System.out.println("프로그램 종료");

break;

} else

System.out.println("그런 영어 단어가 없습니다");

}

}

}


7. 1부터 99까지 369게임에서 박수를 쳐야 하는 경우, 순서대로 화면에 출력하라. (2장 실습문제 6 참고)

package chapter3;

public class 실습문제7 {

      public static void main(String[] args) {

   for (int i = 1; i < 100; i++) {

 if (i < 10)

if (i % 3 == 0)

System.out.println(i + " 박수 한 번");

 if (i >= 10) {

int first = i / 10;

int second = i % 10;

if (first % 3 == 0) {

if (second % 3 == 0)

System.out.println(i + " 박수 두 번");

else

System.out.println(i + " 박수 한 번 ");

}

else

if (second % 3 == 0)

System.out.println(i + " 박수 한 번");

}

   }

      }

}

실행결과

8. 컴퓨터와 사용자의 가위바위보 게임 프로그램을 작성하라. 사용자가 입력하고 <Enter> 키를 치면, 컴퓨터는 랜덤하게 가위, 바위, 보 중 하나를 선택한다. 그리고 누가 이겼는지를 출력한다. ”그만“을 입력하면 게임을 종료한다.

package chapter3;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.util.Random;

import java.util.Scanner;

public class 실습문제8 {

public static void main(String[] args) throws IOException {

Random r = new Random();

int computer = r.nextInt(2);

BufferedReader in new BufferedReader(new InputStreamReader(System.in));

Scanner scanner = new Scanner(System.in);

while (true) {

System.out.print("가위 바위 보!>> ");

String user = scanner.next();

if (user.equals("가위")) {

if (computer == 0)

System.out.println("컴퓨터 : 가위 , 나 : 가위 , 결과 : 무승부");

if (computer == 1)

System.out.println("컴퓨터 : 바위 , 나 : 가위 , 결과 : 패");

if (computer == 2)

System.out.println("컴퓨터 : 보 , 나 : 가위 , 결과 : 승");

}


else if (user.equals("바위")) {

if (computer == 0)

System.out.println("컴퓨터 : 가위 , 나 : 바위 , 결과 : 승");

if (computer == 1)

System.out.println("컴퓨터 : 바위 , 나 : 바위 , 결과 : 무승부");

if (computer == 2)

System.out.println("컴퓨터 : 보 , 나 : 바위 , 결과 : 패");

}


else if (user.equals("보")) {

if (computer == 0)

System.out.println("컴퓨터 : 가위 , 나 : 보 , 결과 : 패");

if (computer == 1)

System.out.println("컴퓨터 : 바위 , 나 : 보 , 결과 : 승");

if (computer == 2)

System.out.println("컴퓨터 : 보 , 나 : 보 , 결과 : 무승부");

}

else if(user.equals("그만")){

System.out.println("프로그램 종료");

break;

}

}

scanner.close();

}

}

실행결과



반응형
반응형

1. 두 정수를 입력받아 합을 구하여 울력하는 프로그램을 작성하라. 키보드 입력은 Scanner클래스를 이용하라.

package chapter2;

import java.util.Scanner;

public class addition {

public static void main(String[] args){

Scanner scanner = new Scanner(System.in);

System.out.print("두 정수를 입력하세요 >>");

int num1 = scanner.nextInt();

int num2= scanner.nextInt();

System.out.println(num1 + "+" + num2 + "은 " + (num1 +num2) );

scanner.close();

}

}



2. 2차원 평면에서 하나의 직사각형은 두 점으로 표현된다. (50,50)과 (100,100)의 두 점으로 이루어진 사각형이 있다고 하자. 한점을 구성하는 정수 x와 y 값을 입력받고 점(x,y)가 이 직사각형 안에 있는지를 판별하는 프로그램을 작성하라.

package chapter2;

import java.util.Scanner;

public class rectangle {

public static void main(String[] args){

Scanner scanner = new Scanner(System.in);

System.out.print("점 (x,y)의 좌표를 입력하세요 >>");

int x = scanner.nextInt();

int y = scanner.nextInt();

if(x >= 50 && x<100 && y>= 50 && y < 100)

System.out.println("점 (" + x + "," + y + ")은 (50,50)과 (100,100)의 사각형 내에 있습니다");

else

System.out.println("점 (" + x + "," + y + ")은 (50,50)과 (100,100)의 사각형 내에 없습니다");

scanner.close();

}

}

3. 다음과 같이 AND와 OR의 논리연산을 입력받아 결과를 출력하는 프로그램을 작성하라. 예를 들어 ‘true AND false’의 결과로 false를, ‘true OR false’의 결과로 true 를 출력하면 된다. if 문 대신 switch 문을 이용하라.

package chapter2;

import java.util.Scanner;

public class LogicalOperation {

public static void main(String[] args){

Scanner scanner = new Scanner(System.in);

System.out.print("논리 연산을 입력하세요>>");

boolean a = scanner.nextBoolean();

String op = scanner.next();

boolean b = scanner.nextBoolean();

switch(op){

case "AND" :

if(a == true && b == true)

System.out.println("true");

else System.out.println("false");

break;

case "OR" :

if(a == true || b == true)

System.out.println("true");

else System.out.println("false");

break;

}

            scanner.close();

}

}

4. 돈의 액수를 입력받아 오만 원권, 만 원권 , 천 원권, 500원짜리 동전, 100원짜리 동전, 10원 짜리 동전, 1원 짜리 동전 각 몇 개로 변환되는지 출력하라. 문제6의 힌트를 참고하라.

package chapter2;

import java.util.Scanner;

public class Money {

public static void main(String[] args){

Scanner scanner = new Scanner(System.in);

System.out.print("돈의 액수를 입력하세요>>");

int money = scanner.nextInt();

int a = money / 50000;

int b = money %50000;

int c = b /10000;

int d = b %10000;

int e = d / 1000;

int f = d % 1000;

int g = f / 500;

int h = f % 500;

int i = h / 100;

int j = h % 100;

int k = j / 10;

int l = j % 10;

System.out.println("오만원 " + a + "개, 만원 " + c + "개, 천원 " + e +"개, 500원"+ g +"개, 100원 " + i +"개, 10원 "+ k + "개, 1원 " + l +"개 " );

scanner.close();

}

}


5. 학점이 A,B이면 “Excellent”, 학점이 C,D이면 “Good”, 학점이 F이면 “Bye”라고 출력하는 프로그램을 작성하라. switch와 break를 활용하라.

package chapter2;

import java.util.Scanner;

public class GradeSwitch {

public static void main(String[] args){

Scanner scanner = new Scanner(System.in);

System.out.print("학점을 입력하세요 >>");

String grade = scanner.next();

switch(grade){

case "A": case "B":

System.out.println("Excellent");

break;

case "C" : case "D":

System.out.println("Good");

break;

case "F":

System.out.println("Bye");

break;

}

scanner.close();

}

}

6. 369게임의 일부를 작성해보자. 1~99까지의 정수를 입력받고 수에 3,6,9중 하나가 있는 경우에는 “박수짝”, 두 개 있는 경우는 “박수 짝짝”, 하나도 없으면 “박수 없음”을 출력하는 프로그램을 작성하라. 예를 들면, 13인 경우 “박수짝”, 36인 경우 “박수 짝짝”, 5인 경우 “박수 없음”을 출력하면 된다.

package chapter2;

import java.util.Scanner;

public class Game369 {

public static void main(String[] args){

Scanner scanner = new Scanner(System.in);

System.out.println("1~99 사이의 정수를 입력하세요 >>");

int num = scanner.nextInt();

int first = num / 10;

int second = num % 10;

switch(first){

case 3: case 6: case 9:

if(second == 3 || second == 6 || second == 9)

System.out.println("박수 짝짝");

else System.out.println("박수 짝");

break;

default :

if(second == 3 || second == 6 || second == 9)

System.out.println("박수 짝");

else System.out.println("박수 없음");

break;

}

scanner.close();

}

}


반응형
반응형

1. 이클립스를 이용하여 화면에 “Welcome!!”을 출력하는 자바프로그램을 작성하라. 작업 공간(Workspace)은 C:\Temp로 하고, 프로젝트 이름은 1-1로 한다. 클래스 이름은 Welcome 으로 한다.

소스코드

public class Welcome {

public static void main(String[] args){

System.out.println("Welcome!!");

}

}

실행화면




2. 이클립스를 이용하여 화면에 “Sorry~~”을 출력하는 자바 프로그램을 작성하라. 작업공간(Workspace)은 C:\Temp로 하고, 프로젝트 이름은 1-2로 한다. 클래스 이름은 Sorry로 한다.

소스코드

public class Sorry {

public static void main(String[] args){

System.out.println("Sorry~~");

}

}

실행화면

3. 이클립스를 이용하여 화면에 “1 2 3 4 5 6 7 8 9”를 출력하는 자바프로그램을 작성하라. 작업 공간(Workspace)은 C:\Temp로 하고, 프로젝트 이름은 1-3로 한다. 클래스 이름은 One2Nine으로 한다.

소스코드

public class One2Nine {

public static void main(String[] args){

System.out.println("1 2 3 4 5 6 7 8 9");

}

}

실행화면


반응형

+ Recent posts