다음 코드를 보면서 자바 프로그램의 기본 구조를 알아보자.
public class Hello {
public static int sum(int n, int m){
return n+m;
}
public static void main(String[] args){
int i=20;
int s;
char a;
s=sum(i,10);
a='?';
System.out.println(a);
System.out.println("Hello");
System.out.println(s);
}
}
?
Hello
30
상수 PI를 선언하고 원의 면적을 구하는 프로그램을 작성하라.
public class CircleArea {
public static void main(String[] args){
final double PI = 3.14;
double radius = 10.0;
double circleArea = radius*radius*PI;
System.out.println("원의 면적 = "+circleArea);
}
}
원의 면적 = 314.0
자동 타입 반환과 강제 타입 반환이 들어 있는 코드이다. 실행 결과는 무엇인가?
public class TypeConversion {
public static void main(String[] args){
byte b = 127;
int i = 100;
System.out.println(b+i);
System.out.println(10/4);
System.out.println(10.0/4);
System.out.println((char)0X12340041);
System.out.println((byte)(b+i));
System.out.println((int)2.9+1.8);
System.out.println((int)(2.9+1.8));
System.out.println((int)2.9+(int)1.8);
}
}
227
2
2.5
A
-29
3.8
4
3
Scanner 클래스로 이름, 도시, 나이, 체중, 독신 여부를 입력받고 다시 출력하는 프로그램을 작성하라.
import java.util.Scanner;
public class ScannerEx {
public static void main(String[] args){
System.out.println("이름, 도시, 나이, 체중, 독신 여부를 빈칸으로 분리하여 입력하세요.");
Scanner sc = new Scanner(System.in);
String name = sc.next(); // 문자열 읽기
System.out.print("이름은 "+name+", ");
String city = sc.next();
System.out.print("도시는 "+city+", ");
int age = sc.nextInt(); // 정수 읽기
System.out.print("나이는 "+age+"살, ");
double weight = sc.nextDouble(); // 상수 읽기
System.out.print("체중은 "+weight+"kg, ");
boolean isSingle = sc.nextBoolean(); // 논리값 읽기
System.out.println("독신 여부는 "+isSingle+"입니다.");
sc.close();
}
}
이름, 도시, 나이, 체중, 독신 여부를 빈칸으로 분리하여 입력하세요.
kim seoul 20 65.1 true
이름은 kim, 도시는 seoul, 나이는 20살, 체중은 65.1kg, 독신 여부는 true입니다.
초단위의 정수를 입력받고, 몇 시간, 몇 분, 몇 초인지 출력하는 프로그램을 작성하라.
import java.util.Scanner;
public class ArithmeticOperator {
public static void main(String [] args){
Scanner sc = new Scanner(System.in);
System.out.print("정수를 입력하세요: ");
int time = sc.nextInt();
int second = time%60; //60으로 나눈 나머지는 초
int minute = (time/60)%60; //60으로 나눈 몫을 다시 60으로 나눈 나머지는 분
int hour = (time/60)/60; //60으로 나눈 몫을 다시 60으로 나눈 몫은 시간
System.out.print(time+"초는 ");
System.out.print(hour+"시간, ");
System.out.print(minute+"분, ");
System.out.print(second+"초입니다.");
sc.close();
}
}
정수를 입력하세요: 3900
3900초는 1시간, 5분, 0초입니다.
다음은 대입 연산자와 증감 연산자를 활용하는 사례이다. 실행 결과는 무엇인가?
public class AssignmentIncDecOperator {
public static void main(String[] args){
int a=3, b=3, c=3;
a+=3;
b*=3;
c%=2;
System.out.println("a="+a+", b="+b+", c="+c);
int d=3;
a=d++;
System.out.println("a="+a+", d="+d);
a=++d;
System.out.println("a="+a+", d="+d);
a=d--;
System.out.println("a="+a+", d="+d);
a=--d;
System.out.println("a="+a+", d="+d);
}
}
a=6, b=9, c=1
a=3, d=4
a=5, d=5
a=5, d=4
a=3, d=3
다음은 비교 연산자와 논리 연산자의 사례이다. 실행 결과는 무엇인가?
public class LogicalOperator {
public static void main(String[] args){
System.out.println('a'>'b');
System.out.println(3>=2);
System.out.println(-1<0);
System.out.println(3.45<=2);
System.out.println(3==2);
System.out.println(3!=2);
System.out.println(!(3!=2));
System.out.println((3>2)&&(3>4));
System.out.println((3!=2)||(-1>0));
System.out.println((3!=2)^(-1>0));
}
}
false
true
true
false
false
true
false
false
true
true
다음은 조건 연산자의 사례이다. 실행 결과는 무엇인가?
public class TernartyOperator {
public static void main(String[] args){
int a=3, b=5;
System.out.println("두 수의 차는 "+((a>b)?(a-b):(b-a)));
}
}
두 수의 차는 2
다음 코드의 실행 결과는 무엇인가?
public class BitOperator {
public static void main(String[] args){
short a = (short)0x55ff;
short b = (short)0x00ff;
System.out.println("[비트 연산 결과]");
System.out.printf("%04x\n",(short)(a&b));
System.out.printf("%04x\n",(short)(a|b));
System.out.printf("%04x\n",(short)(a^b));
System.out.printf("%04x\n",(short)(~a));
byte c=20;
byte d=-8;
System.out.println("[시프트 연산 결과]");
System.out.println("c<<2");
System.out.println("c>>2");
System.out.println("d>>2");
System.out.printf("%x\n", (d>>>2));
}
}
[비트 연산 결과]
00ff
55ff
5500
aa00
[시프트 연산 결과]
c<<2
c>>2
d>>2
3ffffffe
시험 점수가 80점 이상이라면 합격 판별을 하는 프로그램을 작성하라.
import java.util.Scanner;
public class SuccessOrFail {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("점수를 입력하시오: ");
int score = sc.nextInt();
if(score>=80){
System.out.println("축하합니다! 합격입니다.");
}
sc.close();
}
}
점수를 입력하시오:85
축하합니다! 합격입니다.
입력된 수가 3의 배수인지 판별하는 프로그램을 작성하라.
import java.util.Scanner;
public class MultipleOfThree {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("수를 입력하시오: ");
int num = sc.nextInt();
if(num%3==0){ //3으로 나눈 나머지가 0인지 검사
System.out.println("3의 배수입니다.");
} else {
System.out.println("3의 배수가 아닙니다.");
}
sc.close();
}
}
수를 입력하시오: 318
3의 배수입니다.
다중 if-else문을 이용하여 입력받은 성적에 대해 학점을 부여하는 프로그램을 작성하라.
import java.util.Scanner;
public class Grading {
public static void main(String[] args){
char grade;
Scanner sc = new Scanner(System.in);
System.out.println("점수를 입력하세요(0~100): ");
int score = sc.nextInt();
if(score>=90){
grade = 'A';
} else if(score>=80){
grade='B';
} else if(score>=70){
grade='C';
} else if(score>=60){
grade='D';
} else{
grade='F';
}
System.out.println("학점은 "+grade+"입니다.");
sc.close();
}
}
점수를 입력하세요(0~100):
87
학점은 B입니다.
점수와 학년을 입력받아 60점 이상이면 합격, 미만이면 불합격을 출력한다. 4학년의 경우 70점 이상이어야 합격이다.
import java.util.Scanner;
public class NestedIf {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("점수를 입력하시오(0~100): ");
int score = sc.nextInt();
System.out.println("학년을 입력하시오(1~4): ");
int year = sc.nextInt();
if(score>=60){//60점 이상이면
if(year != 4){ //4학년이 아닌 경우
System.out.println("합격!");
} else if(score>=70){ //4학년이 70점 이상이면
System.out.println("합격!");
} else{ //4학년이 70점 미만이면
System.out.println("불합격!");
}
} else{ //60점 미만이면
System.out.println("불합격!");
}
sc.close();
}
}
점수를 입력하시오(0~100):
67
학년을 입력하시오(1~4):
4
불합격!
예제 2-12의 학점 매기는 코드를 switch문으로 다시 작성하라.
import java.util.Scanner;
public class GradingSwitch {
public static void main(String[] args){
char grade;
Scanner sc = new Scanner(System.in);
System.out.println("점수를 입력하세요(0~100): ");
int score = sc.nextInt();
switch(score/10){//60점 이상이면
case 10:
case 9:
grade='A';
break;
case 8:
grade='B';
break;
case 7:
grade='C';
break;
case 6:
grade='D';
break;
default:
grade='F';
}
System.out.println("학점은 "+grade+"입니다.");
sc.close();
}
}
점수를 입력하세요(0~100):
78
학점은 C입니다.
switch문을 이용하여 커피 메뉴와 가격을 알려주는 프로그램을 작성하라. 에스프레소, 카푸치노, 카페라떼는 3500원이고, 아메리카노는 2000원이다.
import java.util.Scanner;
public class CoffeePrice {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("무슨 커피 드릴까요?");
String order = sc.next();
int price=0;
switch (order){
case "에스프레소":
case "카푸치노":
case "카페라떼":
price=3500;
break;
case "아메리카노":
price=2000;
break;
default:
System.out.println("메뉴에 없는 상품입니다.");
}
if(price!=0){
System.out.println(order+"는 "+price+"원입니다.");
}
sc.close();
}
}
무슨 커피 드릴까요?
아메리카노
아메리카노는 2000원입니다.