이론 문제
실습 문제
2. 중심을 나타내는 정수 x,y와 반지름 radius 필드를 가지는 Circle 클래스를 작성하고자 한다. 생성자는 3개의 인자(x,y,radius)를 받아 해당 필드를 초기화하고, equals() 메소드는 두 개의 Circle 객체의 중심이 같으면 같은 것으로 판별하도록 한다.
>>
class Circle{
int x,y,radius;
Circle(int x,int y,int radius){this.x=x;this.y=y;this.radius=radius;}
String show() {return "Circle"+this.center()+"반지름"+radius;}
String center() {return "("+x+","+y+")";}
}
public class EX02 {
public static void main(String[]args) {
Circle a=new Circle(2,3,5);
Circle b=new Circle(2,3,30);
System.out.println("원 a : "+a.show());
System.out.println("원 b : "+b.show());
if(a.center().equals(b.center()))
System.out.println("같은 원");
else
System.out.println("서로 다른 원");
}
}
4. 다음 코드를 수정하여 Shape 클래스는 base 패키지에, Circle 클래스는 derived 패키지에, GraphicEditor 클래스는 app 패키지에 분리 작성하라.
>>
package base;
public class Shape {
public void draw() {System.out.println("Shape");}
}
package derived;
import base.*;
public class Circle extends Shape{
public void draw() {System.out.println("Circle");}
}
package app;
import derived.*;
import base.*;
public class GraphicEditor {
public static void main(String[]args) {
Shape shape=new Circle();
shape.draw();
}
}
6. 경과시간을 맞추는 게임을 작성하라. 다음 예시를 참고하면, <Enter>키를 입력하면 현재 초 시간을 보여주고 여기서 10초에 더 근접하도록 다음 <Enter:>키를 입력한 사람이 이기는 게임이다.
>>
import java.util.Calendar;
import java.util.Scanner;
public class EX06 {
public static void main(String[]args) {
Scanner scan=new Scanner(System.in);
String str;
System.out.println("10초에 가까운 사람이 이기는 게임입니다.");
System.out.print("황기태 시작<Enter>키>>");
str=scan.nextLine();
Calendar h_start=Calendar.getInstance();
int h_s=h_start.get(Calendar.SECOND);
System.out.println("\t현재 초 시간="+h_s);
System.out.print("10초 예상 후 <Enter>키>>");
str=scan.nextLine();
Calendar h_end=Calendar.getInstance();
int h_e=h_end.get(Calendar.SECOND);
System.out.println("\t현재 초 시간="+h_e);
int h=Math.abs((60-h_e)-(60-h_s));
System.out.print("이재문 시작<Enter>키>>");
str=scan.nextLine();
Calendar l_start=Calendar.getInstance();
int l_s=l_start.get(Calendar.SECOND);
System.out.println("\t현재 초 시간="+l_s);
System.out.print("10초 예상 후 <Enter>키>>");
str=scan.nextLine();
Calendar l_end=Calendar.getInstance();
int l_e=l_end.get(Calendar.SECOND);
System.out.println("\t현재 초 시간="+l_e);
int l=Math.abs((60-l_e)-(60-l_s));
String winner;
if(Math.abs(10-h)<Math.abs(10-l))
winner="황기태";
else if(Math.abs(10-h)==Math.abs(10-l))
winner="없다(동점).";
else
winner="이재문";
System.out.println("황기태의 결과 "+h+", 이재문의 결과 "+l+", 승자는 "+winner);
}
}
8. 문자열을 입력받아 한 글자씩 회전시켜 모두 출력하는 프로그램을 작성하라.
>>
import java.util.Scanner;
public class EX08 {
public static void main(String[]args) {
Scanner scan=new Scanner(System.in);
System.out.println("문자열을 입력하세요. 빈칸이나 있어도 되고 영어 한글 모두 됩니다.");
String str=scan.nextLine();
int cnt=0;//출력할 index
for(int i=0;i<str.length();i++) {
cnt=i;
for(int j=0;j<str.length();j++) {
System.out.print(str.charAt(cnt++));
if(cnt>=str.length())
cnt-=str.length();
}
System.out.println();
}
}
}
10. 겜블링 게임을 만들어보자. 두 사람이 게임을 진행한다 .이들의 이름을 키보드로 입력받으며 각 사람은 Person 클래스로 작성하라 .그러므로 프로그램에는 2개의 Person차례에서 <Enter>키를 입력하면, 3개의 난수가 발생되고 이 숫자가 모두 같으면 승자가 되고 게임이 끝난다. 난수의 범위를 너무 크게 잡으면 3개의 숫자가 일치하게 나올 가능성이 적기 대문에 숫자의 범위는 1~3까지로 한다.
>>
import java.util.Scanner;
class Person{
Scanner scan=new Scanner(System.in);
String name;
Person(String name){
this.name=name;
}
void gameStr() {
System.out.println("["+name+"]:<Enter>");
}
String getName() { return name;}
int GameStart() {
int arr[]=new int[3];
int cnt=0;
for(int i=0;i<3;i++)//난수 배열 생성
arr[i]=(int)(Math.random()*3+1);
for(int i=0;i<3;i++){
int num=scan.nextInt();
if(num==arr[i])
cnt++;
}
for(int i=0;i<3;i++)
System.out.print(arr[i]+" ");
if(cnt==3) return 1;
else return 0;
}
}
public class EX10 {
public static void main(String[]args) {
Scanner scan=new Scanner(System.in);
System.out.print("1번째 선수 이름>>");
String name=scan.next();
Person p1=new Person(name);
System.out.print("2번재 선수 이름>>");
name=scan.next();
Person p2=new Person(name);
int num;
do {
p1.gameStr();
num=p1.GameStart();
if(num==1) {
System.out.println(" "+p1.getName()+"님이 이겼습니다.");
break;
}
System.out.println(" 아쉽군요!");
p2.gameStr();
num=p2.GameStart();
if(num==1) {
System.out.println(" "+p2.getName()+"님이 이겼습니다.");
break;
}
System.out.println(" 아쉽군요!");
}while(true);
}
}
12. 문제 10의 겜블링 게임을 n명이 하도록 수정하라. 실행 예시와 같이 게임에 참여하는 선수의 수를 입력받고 각 선수의 이름을 입력받도록 수정하라.
>>
import java.util.Scanner;
class Person{
Scanner scan=new Scanner(System.in);
String name;
Person(String name){
this.name=name;
}
void gameStr() {
System.out.println("["+name+"]:<Enter>");
}
String getName() { return name;}
int GameStart() {
int arr[]=new int[3];
int cnt=0;
for(int i=0;i<3;i++)//난수 배열 생성
arr[i]=(int)(Math.random()*3+1);
for(int i=0;i<3;i++){
int num=scan.nextInt();
if(num==arr[i])
cnt++;
}
for(int i=0;i<3;i++)
System.out.print(arr[i]+" ");
if(cnt==3) return 1;
else return 0;
}
}
public class EX12 {
public static void main(String[]args) {
Scanner scan=new Scanner(System.in);
System.out.print("겜블링 게임에 참여할 숫자>>");
int n=scan.nextInt();
Person[]p=new Person[n];
for(int i=0;i<n;i++) {
System.out.print(i+"번째 선수 이름>>");
String name=scan.next();
p[i]=new Person(name);
}
int num;
int check=0;
do {
for(int i=0;i<n;i++) {
p[i].gameStr();
num=p[i].GameStart();
if(num==1) {
System.out.println(" "+p[i].getName()+"님이 이겼습니다.");
check=1;break;
}
else System.out.println(" 아쉽군요!");
}
}while(check!=1);
}
}
'Language > Java' 카테고리의 다른 글
[명품 Java Programming]5장 문제 (0) | 2020.07.15 |
---|---|
[명품 Java Programming]4장 연습문제 (0) | 2020.07.11 |
[명품 Java Programming]4장 클래스와 객체 (0) | 2020.07.11 |
[명품 Java Programming]3장 연습문제 (0) | 2020.07.11 |
[명품 Java Programming]3장 반복문과 배열 그리고 예외 처리 (0) | 2020.07.11 |
댓글