이론문제
1. 자바에서 클래스를 선언할 때 사용하는 자바의 키워드는?
2. 다음은 10과 20을 더해 합을 출력하려고 작성한 자바 프로그램이지만 오류가 있다.
1) 오류를 찾아내서 고쳐라
2) 이 자바 클래스를 저장하는 소스파일 이름은?
3) 명령창에서 이 프로그램을 컴파일하는 명령은?
4) 명령창에서 이 프로그램을 실행하는 명령은?
실습문제
1. Scanner 클래스를 이용하여 원화를 입력받아 달러로 바꾸어 다음 예시와같이 출력하는 프로그램을 작성하라.
풀이
import java.util.Scanner;
public class EX01 {
public static void main(String[]args) {
Scanner scan=new Scanner(System.in);
System.out.print("원화를 입력하세요(단위 원)>>");
int won=scan.nextInt();
double dollar=won/1100;
System.out.println(won+"원은 $"+dollar+"입니다.");
}
}
2. Scanner 클래스를 이용하여 2자리의 정수(10~99사이)를 입력받고, 십의 자리와 1의 자리가 같은지 판별하여 출력하는 프로그램을 작성하라.
풀이
import java.util.Scanner;
public class EX02 {
public static void main(String[]args) {
Scanner scan=new Scanner(System.in);
System.out.print("2자리수 정수 입력(10~99)>>");
int num=scan.nextInt();
if(num%10==num/10) {
System.out.println("Yes! 10의 자리와 1의 자리가 같습니다.");
}
else
System.out.println("No! 같지 않습니다.");
}
}
3. Scanner 클래스를 이용하여 정수로 된 돈의 액수를 입력받아 오만 원권, 만 원권, 천 원권, 500원짜리 동전, 100원짜리 동전, 50원짜리 동전, 10원짜리 동전, 1원자리 동전 각 몇개로 변환되는지 출력하라.
풀이
import java.util.Scanner;
public class EX03 {
public static void main(String[]args) {
Scanner scan=new Scanner(System.in);
System.out.print("금액을 입력하시오>>");
int money=scan.nextInt();
System.out.println("오만원권 "+money/50000+"매");
money-=(money/50000)*50000;
System.out.println("만원권 "+money/10000+"매");
money-=(money/10000)*10000;
System.out.println("천원권 "+money/1000+"매");
money-=(money/1000)*1000;
System.out.println("백원 "+money/100+"개");
money-=(money/100)*100;
System.out.println("오십원 "+money/50+"개");
money-=(money/50)*50;
System.out.println("십원 "+money/10+"개");
money-=(money/10)*10;
System.out.println("일원 "+money+"개");
}
}
4. Scanner 클래스로 정수 3개를 입력받고 3개의 숫자 중 중간 크기의 수를 출력하라. 평균값을 구하는게 아님에 주의하라.
풀이
import java.util.Scanner;
public class EX04 {
public static void main(String[]args) {
Scanner scan=new Scanner(System.in);
System.out.print("정수 3개 입력>>");
int num1=scan.nextInt();
int num2=scan.nextInt();
int num3=scan.nextInt();
if((num1>=num2 && num1<=num3) || (num1>=num2 && num1<=num3))
System.out.println("중간 값은 "+num1);
else if((num2>=num1 && num2<=num3) || (num2>=num1 && num2<=num3))
System.out.println("중간 값은 "+num2);
else
System.out.println("중간 값은 "+num3);
}
}
5. Scanner를 이용하여 삼각형의 변의 길이를 나타내는 정수를 3개 입력받고 이 3개의 수로 삼각혀을 만들 수 있는지 판별하라. 삼각형이 되려면 두 변의 합이 다른 한 변의 합보다 커야 한다.
풀이
import java.util.Scanner;
public class EX05 {
public static void main(String[]args) {
Scanner scan=new Scanner(System.in);
System.out.print("정수 3 개를 입력하시오>>");
int num1=scan.nextInt();
int num2=scan.nextInt();
int num3=scan.nextInt();
if((num1+num2)>num3 && (num2+num3)>num1 && (num1+num3)>num2)
System.out.println("삼각형이 됩니다.");
else
System.out.println("삼각형이 안됩니다.");
}
}
6. 369게임을 간단히 작성해보자. 1~99까지의 정수를 입력받고 정수에 3, 6, 9중 하나가 있는 경우는 "박수짝"을 출력하고 두 개 있는 정수는 "박수짝짝"을 출력하는 프로그램을 작성하라. 예를 들면, 키보드로 입력된 수가 13인 경우 "박수짝"을, 36인 경우 "박수짝짝"을 출력하면 된다.
풀이
import java.util.Scanner;
public class EX06 {
public static void main(String[]args) {
Scanner scan=new Scanner(System.in);
System.out.print("1~99사이의 정수를 입력하세요");
int num=scan.nextInt();
if((num%10==3 || num%10==6 || num%10==9) && (num/10==3 || num/10==6 || num/10==9))
System.out.println("박수 짝짝");
else if((num%10==3 || num%10==6 || num%10==9) || (num/10==3 || num/10==6 || num/10==9))
System.out.println("박수 짝");
}
}
7. 2차원 평면에서 직사각형은 왼쪽 상단 모서리와 오른쪽 하단 모서리의 두 점으로 표현한다. (100,100)과 (200,200)의 두 점으로 이루어진 사각형이 있을 때, Scanner를 이용하여 정수 x와 y값을 입력받고 점 (x,y)가 이 직사각형 안에 있는지를 판별하는 프로그램을 작성하라.
풀이
import java.util.Scanner;
public class EX07 {
public static void main(String[]args) {
Scanner scan=new Scanner(System.in);
System.out.print("점 (x,y)의 좌표를 입력하시오>>");
int x=scan.nextInt();
int y=scan.nextInt();
if((x>=100 && x<=200) && (y>=100 && y<=200))
System.out.println("("+x+","+y+")는 사각형 안에 있습니다.");
else
System.out.println("("+x+","+y+")는 사각형 안에 없습니다.");
}
}
8. 2차원 평면에서 직사각형은 문제 7번처럼 두 점으로 표현된다. 키보드로부터 직사각형을 구성하는 두 점 (x1,y1), (x2,y2)를 입력받아 (100,100), (200,200)의 두 점으로 이루어진 직사각형과 충돌하는지 판별하는 프로그램을 작성하라.
풀이
import java.util.Scanner;
public class EX08 {
public static void main(String[]args) {
Scanner scan=new Scanner(System.in);
System.out.print("점 (x1,y1)의 좌표를 입력하시오>>");
int x1=scan.nextInt();
int y1=scan.nextInt();
System.out.print("점 (x2,y2)의 좌표를 입력하시오>>");
int x2=scan.nextInt();
int y2=scan.nextInt();
//x1<x2 && y1<y2 임을 가정함
if((x1>100 && x1<200 && y1>100 && y1<200) || (x2>100 && x2<200 && y2>100 && y2<200) || (x1<200 && y1<200 && x2>100 && y2>100))
System.out.println("("+x1+","+y1+"), "+"("+x2+","+y2+")는 사각형과 충돌합니다.");
else
System.out.println("충돌하지 않습니다.");
}
맞는지는 모르겠다...
9. 원의 중심을 나타내는 한 점과 반지름을 실수 값으로 입력받아라. 그리고 실수 값으로 다른 점 (x,y)를 입력받아 이 점이 원의 내부에 있는지를 판별하여 출력하라.
풀이
import java.util.Scanner;
public class EX09 {
public static void main(String[]args) {
Scanner scan=new Scanner(System.in);
System.out.print("원의 중심과 반지름 입력>>");
double x1=scan.nextDouble();
double y1=scan.nextDouble();
double r=scan.nextDouble();
System.out.print("점 입력>>");
double x2=scan.nextDouble();
double y2=scan.nextDouble();
if(Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))<r)
System.out.println("점 ("+x2+","+y2+")는 원 안에 있다.");
}
}
10. 원의 정보를 받기 위해 키도브로부터 원의 중심을 나타내는 한 점과 반지름을 입력받는다. 두 개의 원을 입력받고 두 원이 서로 겹치는지 판단하여 출력하라.
풀이
import java.util.Scanner;
public class EX10 {
public static void main(String[]args) {
Scanner scan=new Scanner(System.in);
System.out.print("원의 중심과 반지름 입력>>");
double x1=scan.nextDouble();
double y1=scan.nextDouble();
double r1=scan.nextDouble();
System.out.print("원의 중심과 반지름 입력>>");
double x2=scan.nextDouble();
double y2=scan.nextDouble();
double r2=scan.nextDouble();
if(Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))<(r1+r2))
System.out.println("두 원은 서로 겹친다.");
scan.close();
}
}
11. 숫자를 입력받아 3~5는 "봄", 6~8은 "여름", 9~11은 "가을", 12,1,2의 경우 "겨울"을, 그 외 숫자를 입력한 경우 "잘못입력"을 출력하는 프로그램을 작성하라.
1) if-else문을 이용하여 프로그램을 작성하라
import java.util.Scanner;
public class EX11_1 {
public static void main(String[]args) {
Scanner scan=new Scanner(System.in);
System.out.print("달을 입력하세요>>");
int m=scan.nextInt();
if((m>=3)&&(m<=5))
System.out.println("봄");
else if((m>=6)&&(m<=8))
System.out.println("여름");
else if((m>=9)&&(m<=11))
System.out.println("가을");
else if((m>=1)&&(m<=2)||m==12)
System.out.println("겨울");
else
System.out.println("잘못입력");
scan.close();
}
}
2) switch문을 이요하여 프로그램을 작성하라
import java.util.Scanner;
public class EX11_2 {
public static void main(String[]args) {
Scanner scan=new Scanner(System.in);
System.out.print("달을 입력하세요>>");
int m=scan.nextInt();
switch(m) {
case 3:case 4:case 5:
System.out.println("봄");
break;
case 6:case 7:case 8:
System.out.println("여름");
break;
case 9:case 10: case 11:
System.out.println("가을");
break;
case 12:case 1:case 2:
System.out.println("겨울");
break;
default:
System.out.println("잘못입력");
break;
}
scan.close();
}
}
12. 사칙연산을 입력받아 계산하는 프로그램을 작성하고자 한다. 연산자는 +,=,*,/의 네 가지로 하고 피연산자는 모두 실수로 한다. 피연산자의 연산자는 실행 사례와 같이 빈 칸으로 분리하여 입력한다. 0으로 나누기 시"0으로 나눌 수 없습니다."를 출력하고 종료한다.
1) 연산 식을 구분할 때 if-else 문을 이용하여 프로그램을 작성하라
import java.util.Scanner;
public class EX12_1 {
public static void main(String[]args) {
Scanner scan=new Scanner(System.in);
System.out.print("연산>>");
int num1=scan.nextInt();
String str=scan.next();
int num2=scan.nextInt();
char c=str.charAt(0);
if(c=='+')
System.out.println(num1+"+"+num2+"의 계산 결과는 "+(num1+num2));
else if(c=='-')
System.out.println(num1+"-"+num2+"의 계산 결과는 "+(num1-num2));
else if(c=='*')
System.out.println(num1+"*"+num2+"의 계산 결과는 "+(num1*num2));
else if(c=='/' && num2==0)
System.out.println("0으로 나눌 수 없습니다.");
else if(c=='/')
System.out.println(num1+"/"+num2+"의 계산 결과는 "+((double)num1/num2));
scan.close();
}
}
2) 연산 식을 구분할 때 switch 문을 이용하여 프로그램을 작성하라
import java.util.Scanner;
public class EX12_2 {
public static void main(String[]args) {
Scanner scan=new Scanner(System.in);
System.out.print("연산>>");
int num1=scan.nextInt();
String str=scan.next();
int num2=scan.nextInt();
char c=str.charAt(0);
switch(c) {
case '+':
System.out.println(num1+"+"+num2+"의 계산 결과는 "+(num1+num2));
break;
case '-':
System.out.println(num1+"-"+num2+"의 계산 결과는 "+(num1-num2));
break;
case '*':
System.out.println(num1+"*"+num2+"의 계산 결과는 "+(num1*num2));
break;
case '/':
if(num2==0) {
System.out.println("0으로 나눌 수 없습니다.");
break;
}
System.out.println(num1+"/"+num2+"의 계산 결과는 "+((double)num1/num2));
break;
}
scan.close();
}
}
'Language > Java' 카테고리의 다른 글
[명품 Java Programming]4장 클래스와 객체 (0) | 2020.07.11 |
---|---|
[명품 Java Programming]3장 연습문제 (0) | 2020.07.11 |
[명품 Java Programming]3장 반복문과 배열 그리고 예외 처리 (0) | 2020.07.11 |
[명품 JAVA Programming] 2장 자바 기본 프로그래밍 (0) | 2020.07.08 |
[명품JAVA Programming] 1장 자바 시작 (0) | 2020.07.07 |
댓글