Scanner 클래스를 이용하여 원화를 입력받아 달러로 바꾸어 다음 예시와 같이 출력하는 프로그램을 작성하라. $1=1100원으로 가정하고 계산하라.
원화를 입력하세요(단위 원) >> 3300
3300원은 $3.0입니다.
import java.util.Scanner;
public class WonToDollar {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("원화를 입력하세요(단위 원)>>");
int won = sc.nextInt();
double dollar = won/1100;
System.out.println(won+"원은 $"+dollar+"입니다.");
sc.close();
}
}
Scanner 클래스를 이용하여 2자리의 정수(10~99)를 입력받고, 십의 자리와 1의 자리가 같은지 판별하여 출력하는 프로그램을 작성하라.
2자리수 정수 입력(10~99)>>77
Yes! 10의 자리와 1의 자리가 같습니다.
import java.util.Scanner;
public class EqualToDigitsOf10And1 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("2자리수 정수 입력(10~99)>>");
int num = sc.nextInt();
if(num>9&&num<100) {
int ten = num/10; //10의 자리수는 입력받은 정수를 10으로 나누었을 때의 몫
int one = num%10; //1의 자리수는 입력받은 정수를 10으로 나누었을 때의 나머지
if(ten == one) {
System.out.println("YES! 10의 자리와 1의 자리가 같습니다.");
} else {
System.out.println("NO! 10의 자리와 1의 자리가 다릅니다.");
}
} else {
System.out.println("정수 범위 초과");
}
sc.close();
}
}
Scanner 클래스를 이용하여 정수로 된 돈의 액수를 입력받아 오만원권, 만원권, 천원권, 500원짜리 동전, 100원짜리 동전, 100원짜리 동전, 50원짜리 동전, 10원짜리 동전, 1원짜리 동전 각 몇 개로 변환되는지 출력하라.
금액을 입력하시오>>65376
오만원권 1매
만원권 1매
천원권 5매
백원 3개
오십원 1개
십원 2개
일원 6개
import java.util.Scanner;
public class ChangeMoneyBasic {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("금액을 입력하시오>>");
int money = sc.nextInt();
System.out.println("오만원권 "+money/50000+"매");
money%=50000;
System.out.println("만원권 "+money/10000+"매");
money%=10000;
System.out.println("오천원권 "+money/5000+"매");
money%=5000;
System.out.println("천원권 "+money/1000+"매");
money%=10000;
System.out.println("오백원 "+money/500+"개");
money%=500;
System.out.println("백원 "+money/100+"개");
money%=100;
System.out.println("오십원 "+money/50+"개");
money%=50;
System.out.println("십원 "+money/10+"개");
money%=10;
System.out.println("일원 "+money+"개");
sc.close();
}
}
import java.util.Scanner;
public class ChangeMoney {
public static void main(String[] args){
int num; //지폐의 장수 또는 동전의 개수
Scanner sc = new Scanner(System.in);
System.out.print("금액을 입력하시오>>");
int money = sc.nextInt();
num = money/50000;
money%=50000;
if(num>0) System.out.println("오만원권 "+num+"매");
num = money/10000;
money%=10000;
if(num>0) System.out.println("만원권 "+num+"매");
num = money/5000;
money%=5000;
if(num>0) System.out.println("오천원권 "+num+"매");
num = money/1000;
money%=10000;
if(num>0) System.out.println("천원권 "+num+"매");
num = money/500;
money%=500;
if(num>0) System.out.println("오백원 "+num+"개");
num = money/100;
money%=100;
if(num>0) System.out.println("백원 "+num+"개");
num = money/50;
money%=50;
if(num>0) System.out.println("오십원 "+num+"개");
num = money/10;
money%=10;
if(num>0) System.out.println("십원 "+num+"개");
num = money;
if(num>0) System.out.println("일원 "+num+"개");
sc.close();
}
}
import java.util.Scanner;
public class ChangeMoneyArray {
public static void main(String[] args){
int num; //지폐의 장수 또는 동전의 개수
int index[] = {50000, 10000, 5000, 1000, 500, 100, 50, 10, 1};
Scanner sc = new Scanner(System.in);
System.out.print("금액을 입력하시오>>");
int money = sc.nextInt();
for(int i=0; i<index.length; i++){
num = money/index[i];
money%=index[i];
if(i<4) { //지폐
if (num > 0) System.out.println(index[i] + "원권 " + num + "매");
} else { //동전
if (num > 0) System.out.println(index[i] + "원 " + num + "개");
}
}
sc.close();
}
}
Scanner 클래스로 정수 3개를 입력받고 3개의 숫자 중 중간 크기의 수를 출력하라. 평균값을 구하는 것이 아님에 주의하라.
정수 3개 입력>>20 100 33
중간값은 33
import java.util.Scanner;
public class PrintMedianBasic {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("정수 3개 입력>>");
int num1 = sc.nextInt();
int num2 = sc.nextInt();
int num3 = sc.nextInt();
if(num2<num1&&num1<num3) System.out.println("중간값은 "+num1+"입니다.");
else if (num1<num2&&num2<num3) System.out.println("중간값은 "+num2+"입니다.");
else System.out.println("중간값은 "+num3+"입니다.");
sc.close();
}
}
import java.util.Scanner;
public class PrintMedian {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("정수 3개 입력>>");
int num1 = sc.nextInt();
int num2 = sc.nextInt();
int num3 = sc.nextInt();
if(num1!=num2 && num2!=num3 && num3!=num1) { // 입력받은 값이 서로 다른 3개의 정수일 때
if (num2 < num1 && num1 < num3) System.out.println("중간값은 " + num1 + "입니다.");
else if (num1 < num2 && num2 < num3) System.out.println("중간값은 " + num2 + "입니다.");
else System.out.println("중간값은 " + num3 + "입니다.");
} else { // 입력받은 값 중에 서로 같은 정수가 있는 경우
if (num1 == num2) {
System.out.println("중간값은 " + num1 + "입니다.");
} else if (num2 == num3) {
System.out.println("중간값은 " + num2 + "입니다.");
} else System.out.println("중간값은 " + num3 + "입니다.");
}
sc.close();
}
}
Scanner를 이용하여 삼각형의 변의 길이를 나타내는 정수를 3개 입력받고 이 3개의 수로 삼각형을 만들 수 있는지 판별하라. 삼각형이 되려면 두변의 합이 다른 한 변보다 커야 한다.
정수 3개를 입력하시오>>4 3 5
삼각형이 됩니다.
import java.util.Scanner;
public class MakeTriangle {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("정수 3개를 입력하시오>>");
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
if(a+b<c || b+c<a || c+a<b) System.out.println("삼각형이 되지 못합니다.");
else System.out.println("삼각형이 됩니다.");
sc.close();
}
}
369게임을 간단히 작성해보자. 1~99까지의 정수를 입력받고 정수에 3, 6, 9 중 하나가 있는 경우는 "박수짝"을 출력하고 두 개 있는 경우는 "박수짝짝"을 출력하는 프로그램을 작성하라. 예를 들면, 키보드로 입력된 수가 13인 경우 "박수짝"을, 36인 경우 "박수짝짝"을 출력하면 된다.
1~99 사이의 정수를 입력하시오>>36
박수짝짝
import java.util.Scanner;
public class Game369 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("1~99 사이의 정수를 입력하시오>>");
int num = sc.nextInt();
int ten = num/10;
int one = num%10;
if(num<100) {
if(ten==3 || ten==6 || ten==9) {
if(one==3 || one==6 || one==9) System.out.println("박수짝짝");
else System.out.println("박수짝");
} else {
if(one==3 || one==6 || one==9) System.out.println("박수짝");
else System.out.println(num);
}
} else System.out.println("정수 범위 초과");
sc.close();
}
}
2차원 평면에서 직사각형은 왼쪽 상단 모서리와 오른쪽 하단 모서리의 두 점으로 표현한다. (100, 100)과 (200, 200)의 두 점으로 이루어진 사각형이 있을 때, Scanner를 이용하여 정수 x와 y값을 입력받고 점 (x, y)가 이 직사각형 안에 있는지를 판별하는 프로그램을 작성하라.
점 (x, y)의 좌표를 입력하시오>>150 150
(150, 150)는 사각형 안에 있습니다.
import java.util.Scanner;
public class XYRect {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("점 (x,y)의 좌표를 입력하시오>>");
int x = sc.nextInt();
int y = sc.nextInt();
if(x>99&&x<201&&y>99&&y<201){
System.out.println("("+x+", "+y+")는 사각형 안에 있습니다.");
} else System.out.println("("+x+", "+y+")는 사각형 안에 없습니다.");
sc.close();
}
}
2차원 평면에서 직사각형은 문제 7번처럼 두 점으로 표현된다. 키보드로부터 직사각형을 구성하는 두 점 (x1, y1), (x2, y2)를 입력받아 (100, 100), (200, 200)의 두 점으로 이루어진 직사각형과 충돌하는지 판별하는 프로그램을 작성하라.
다음은 점 (x,y)가 (rectx1, recty1), (rectx2, recty2)의 사각형 안에 있으면 true를 리턴하는 메소드이다. 이 메소드를 활용하라.
public static boolean inRect(int x, int y, int rectx1, int recty1, int rectx2, int recty2) {
if((x >= rectx1 && x <= rectx2) && (y >= recty1 && y <= recty2))
return true;
else
return false;
}
(x1, y1) 의 값을 입력해 주세요 >>150 150
(x2, y2) 의 값을 입력해 주세요 >>300 300
두 사각형은 충돌합니다.
import java.util.Scanner;
public class XYRectCrush {
public static boolean inRect(int x, int y){
if(x>99&&x<201&y>99&&y<201){
return true;
} else{
return false;
}
}
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("(x1,y1)의 좌표를 입력하시오>>");
int x1 = sc.nextInt();
int y1 = sc.nextInt();
System.out.print("(x2,y2)의 좌표를 입력하시오>>");
int x2 = sc.nextInt();
int y2 = sc.nextInt();
boolean rect1 = inRect(x1, y1);
boolean rect2 = inRect(x2, y2);
if(rect1==true || rect2==true){
System.out.println("두 사각형은 충돌합니다.");
} else System.out.println("두 사각형은 충돌하지 않습니다.");
sc.close();
}
}
원의 중심을 나타내는 한 점과 반지름을 실수 값으로 입력받아라. 그리고 실수 값으로 다른 점 (x, y)를 입력받아 이 점이 원의 내부에 있는지 판별하여 출력하라.
중심에서 점 (x, y) 사이의 거리가 반지름보다 작거나 같으면 원의 내부에 있다. 변수 x에 대한 제곱근의 값은 Math.sqrt(x)를 이용하면 된다. Math는 6장에서 설명한다.
원의 중심과 반지름 입력>>10 10 6.5
점 입력>>13 13
점 (13,13)는 원 안에 있다.
import java.util.Scanner;
public class XYCircle {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("원의 중심과 반지름 입력>>");
int cx = sc.nextInt();
int cy = sc.nextInt();
double r = sc.nextDouble();
System.out.print("점 입력>>");
int x = sc.nextInt();
int y = sc.nextInt();
double distance = Math.sqrt((cx-x)*(cx-x)+(cy-y)*(cy-y));
if(distance<r) System.out.println("점 ("+x+", "+y+")는 원 안에 있다.");
else System.out.println("점 ("+x+", "+y+")는 원 안에 없다.");
sc.close();
}
}
원의 정보를 받기 위해 키보드로부터 원의 중심을 나타내는 한 점과 반지름을 입력받는다. 두 개의 원을 입력받고 두 원이 서로 겹치는지 판단하여 출력하라.
첫번째 원의 중심과 반지름 입력>>10 10 3
두번째 원의 중심과 반지름 입력>>12 12 2
두 원은 서로 겹친다.
import java.util.Scanner;
public class OverlapCircles {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("첫번째 원의 중심과 반지름 입력>>");
int x1 = sc.nextInt();
int y1 = sc.nextInt();
double r1 = sc.nextDouble();
System.out.print("두번째 원의 중심과 반지름 입력>>");
int x2 = sc.nextInt();
int y2 = sc.nextInt();
double r2 = sc.nextDouble();
double distance = Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
if(distance>r1+r2) System.out.println("두 원은 서로 겹치지 않는다.");
else System.out.println("두 원은 서로 겹친다.");
sc.close();
}
}
숫자를 입력받아 3~5는 "봄", 6~8은 "여름", 9~11은 "가을", 12,1,2의 경우 "겨울"을, 그 외 숫자를 입력한 경우 "잘못입력"을 출력하는 프로그램을 작성하라.
달을 입력하세요(1~12)>>9
가을
(1) if-else 문을 이용하여 프로그램을 작성하라.
import java.util.Scanner;
public class InNumOutSeasonIf {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("달을 입력하세요(1~12)>>");
int num = sc.nextInt();
if(num>2&&num<6) System.out.println("봄");
else if (num>5&&num<9) System.out.println("여름");
else if (num>8&&num<12) System.out.println("가을");
else if(num==12||num==1||num==2) System.out.println("겨울");
else System.out.println("잘못입력");
sc.close();
}
}
(2) switch 문을 이용하여 프로그램을 작성하라.
import java.util.Scanner;
public class InNumOutSeasonSwitch {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("달을 입력하세요(1~12)>>");
int num = sc.nextInt();
switch (num) {
case 1:
case 2:
System.out.println("겨울");
break;
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:
System.out.println("겨울");
break;
default:
System.out.println("잘못입력");
break;
}
sc.close();
}
}
사칙연산을 입력받아 계산하는 프로그램을 작성하고자 한다. 연산자는 +, -, *, /의 네 가지로 하고 피연산자는 모두 실수로 한다. 피연산자와 연산자는 실행 사례와 같이 빈 칸으로 분리하여 입력한다. 0으로 나누기 시 "0으로 나눌 수 없습니다."를 출력하고 종료한다.
연산자는 scanner.next()를 이용하여 문자열로 입력받으면 된다. 문자열 s가 "+"와 같은지 검사하려면 if(s.equals("+"))를 이용하며, true이면 s와 "+"가 같다.
연산>>2 + 4
2.0+4.0의 계산 결과는 6.0
(1) 연산식을 구분할 때 if-else 문을 이용하여 프로그램을 작성하라.
import java.util.Scanner;
public class OperatorCalcIf {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("연산>>");
double x = sc.nextDouble();
String operator = sc.next();
double y = sc.nextDouble();
double result;
if(operator.equals("+")){
result = x+y;
System.out.println(x+operator+y+"의 계산 결과는 "+result);
} else if (operator.equals("-")) {
result = x-y;
System.out.println(x+operator+y+"의 계산 결과는 "+result);
} else if (operator.equals("*")) {
result = x*y;
System.out.println(x+operator+y+"의 계산 결과는 "+result);
} else if (operator.equals("/")) {
result = x/y;
System.out.println(x+operator+y+"의 계산 결과는 "+result);
} else {
System.out.println("잘못입력");
}
sc.close();
}
}
(2) 연산식을 구분할 때 switch 문을 이용하여 프로그램을 작성하라.
import java.util.Scanner;
public class OperatorCalcSwitch {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("연산>>");
double x = sc.nextDouble();
String operator = sc.next();
double y = sc.nextDouble();
double result;
switch (operator) {
case "+":
result = x + y;
System.out.println(x + operator + y + "의 계산 결과는 " + result);
break;
case "-":
result = x - y;
System.out.println(x + operator + y + "의 계산 결과는 " + result);
break;
case "*":
result = x * y;
System.out.println(x + operator + y + "의 계산 결과는 " + result);
break;
case "/":
result = x / y;
System.out.println(x + operator + y + "의 계산 결과는 " + result);
break;
default:
System.out.println("잘못입력");
break;
}
sc.close();
}
}