프로그래밍 언어/JAVA

명품 Java progamming 3장 실습문제 11 ~16 해답

창조적생각 2021. 6. 29. 21:42

11.다음과 같이 작동하는 Average.java를 작성하라. 명령행 인자는 모두 정수만 사용되며 정수들의 평균을 출력한다.
다음 화면은 컴파일된 Average.class파일을 c:\Temp디렉터리에 복사한 뒤 실행한 경우이다. 원본 Average.class 파일은
이클립스의 프로젝트 폴더 및에 bin 폴더에 있다.

[결과]
명령 프롬프트
c:\Temp> java Average 2 3 4
3
c:\Temp>

 

 

[풀이]

public class Exercise3_11 {

 

public static void main(String[] args) {


int sum = 0;
int count = 0;

for(int i = 0; i < args.length; i++) {
sum +=Integer.parseInt(args[i]); // sum 연산을 위해String값으로 입력된 숫자를 int형으로 변환해 줍니다.
count++;}

 

System.out.println("평균은" + sum/count);

}

}

 

12.다음과 같이 작동하는 Add.java를 작성하라. 명령행 인자 중에서 정수 만을 골라 합을 구하라. 다음 화면은 Add.class파일을 c:\Temp 디렉터리에 복사한 뒤 실행한 경우이다. 원본 Add.class 파일은 이클립스 프로젝트 폴더 밑에 bin 폴더에 있다.

 

[결과]

명령 프롬프트

c:\Temp>java Add 2 3 aa 5 6.5

10

c:\Temp>java Add hell 3 4 4.3 c

7

c:\Temp>

 

[풀이]

public class Exercise3_12 {

public static void main(String[] args) {
// TODO Auto-generated method stub
int sum = 0;

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

sum += Integer.parseInt(args[i]);

}
catch(NumberFormatException e) { //NumberFormatException는 문자열이 나타내는 숫자와 일치하지 않는 타입의 숫자로 변환시  발생하는 오류입니다.
args[i] = "0"; //args[]는 string 계열을 가지기에 0앞 뒤로 ""를 붙여 문자열처리했습니다.

}
}

System.out.println(sum);

}

}

 

13.반복문을 이용하여 369게임에서 박수를 쳐야하는 경우를 순서대로 화면에 출력해보자. 1부터 시작하여 99까지만 한다. 실행 사례는 다음과 같다.

 

[결과]

...

9박수짝
13박수짝
16박수짝
19박수짝

23박수짝
26박수짝
29박수짝
31박수짝
32박수짝
33박수짝짝

...

99박수짝짝

 

 

[풀이]

// 박수를 쳐야하는 상황을 세가지로 나누었다.

박수짝 : 1의 자리만 3의 배수이거나 10의 자리만 3의 배수일 경우

박수짝짝 : 1의 자리와 10의 자리 모두 3의 배수인 경우

public class Exercise3_13 {

public static void main(String[] args) {
// TODO Auto-generated method stub

for (int i = 1; i <= 99; i++) {
if (i<10 && i%3 == 0)
System.out.println(i + "박수짝");
if(i > 10 && (i/10%3 ==0) && (i%10%3 == 0) &&(i%10 != 0) ) // 두번째 조건 (i%10%3 == 0일 때 10의 배수들도 조건에 맞기 때문에 그들을 제거할 (i%10 !=0) 조건을 추가하였다.
System.out.println(i +"박수짝짝");
if(i > 10 && (i/10%3 ==0) && (i%10%3 != 0) )
System.out.println(i + "박수짝");
if(i > 10 && (i/10%3 !=0) && (i%10%3 == 0) &&(i%10 != 0))
System.out.println(i + "박수짝");
}
    
}

}

 

14. 다음 코드와 같이 과목과 점수가 짝을 이루도록 2개의 배열을 작성하라.

String course[] = {"Java", "C++", "HTML5", "컴퓨터구조", "안드로이드"};
int score[] = {95, 88, 76, 62, 55};

그리고 다음 예시와 같이 과목 이름을 입력받아 점수를 출력하는 프로그램을 작성하라. "그만"을 입력받으면 종료한다. (Java는 인덱스 0에 있으므로 score[0]을 출력)

 

[결과]

과목 이름 >> Jaba
없는 과목입니다.
과목 이름 >> Java
Java의 점수는 95
과목 이름 >> 안드로이드
안드로이드의 점수는 55
과목 이름 >> 그만

 

[Hint] 문자열을 비교하기 위해서는 String 클래스의 equals()메소드를 이용해야 한다.

[풀이]

import java.util.Scanner;

public class Exercise3_14 {

 

public static void main(String[] args) {

// TODO Auto-generated method stub

Scanner scanner = new Scanner(System.in);

 

String course [] = {"Java", "C++", "HTML5", "컴퓨터구조", "안드로이드"};

int score [] = {95, 88, 76, 62, 55};

String name = "";

int i;

while(true) {

System.out.print("과목이름>>");

name = scanner.next();

if(name == "그만") 

break; //break문

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

if(course[i].equals(name)) {

System.out.println(course[i] + "의 점수는" + score[i]); //course안에 문구를 제대로 적는다면 그에 상응하는 score와 함께 출력합니다.

}

 

}

if (i >= course.length)

System.out.println("없는 과목입니다.");

}

 

 

 

 

}

 

}

15. 다음은 2개의 정수를 입력 받아 곱을 구하는 Multiply 클래스이다.

import java.util.Scanner;
public class Exercise3_15 {
public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

int n = scanner.nextInt();
int m = scanner.nextInt();

System.out.println(n + "x" + m + "=" + n*m);

scanner.close();

}

}

실수가 입력되면 정수를 다시 입력하도록 하여 예외 없이 정상적으로 처리되도록 예외처리되도록 예외 처리 코드를 삽입하여 Multiply 클래스를 수정하라.

 

[결과]

곱하고자 하는 두 수 입력>>2.5 4
실수는 입력이 안됩니다.
곱하고자 하는 두 수 입력>>4 3.5
실수는 입력이 안됩니다.
곱하고자 하는 두 수 입력>>4 3
4x3=12

 

[풀이]

import java.util.InputMismatchException;
import java.util.Scanner;

public class Exercise3_15 {

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);

while(true) 
{
try {
System.out.print("곱하고자 하는 두 수 입력>>");

int n = scanner.nextInt();
int m = scanner.nextInt();

System.out.println(n + "x" + m + "=" + n*m);}
catch(InputMismatchException e)

{
System.out.println("실수는 입력이 안됩니다.");
scanner.nextLine(); //.nextLine()로이미 입력된 키 모두 제거하지 않으면 무한히 반복됩니다. 
continue;
}
}
}

}

 

16. 컴퓨터와 독자 사이의 가위 바위 보 게임을 만들어보자. 예시는 다음 그림과 같다. 독자부터 먼저 시작한다. 독자가 가위 바위 보 중 하나를 입력하고 <Enter>키를 치면 프로그램은 가위 바위 보 중에서 랜덤하게 하나를 선택하고 컴퓨터가 낸 것으로 한다. 독자가 입력한 값과 랜덤하게 선택한 값을 비교하여 누가 이겼는지 판단한다.

가위 바위 보 대신 "그만"을 입력하면 게임을 끝낸다.  

 

[결과]

컴퓨터와 가위바위보를 합니다.

가위 바위 보>> 보

사용자 :보 컴퓨터 :보 비겼습니다.

가위 바위 보 >> 가위

사용자 :가위 컴퓨터: 보 이겼습니다.

가위 바위 보 >> 그만

 

 

[풀이]

import java.util.Scanner;

public class Exercise3_16 {

 

public static void main(String[] args) {

// TODO Auto-generated method stub

Scanner scanner = new Scanner(System.in);

 

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

String input = "";

 

System.out.print("컴퓨터와 가위 바위 보 게임을 합니다.");

while(true) {

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

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

input = scanner.next();

if(input.equals("그만"))

break;

if(str[i].equals(input))

System.out.println("사용자: "+input+" 컴퓨터: "+str[i]+" 비겼습니다.");  //비기는 수

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

if(str[i].equals("바위"))

System.out.println("사용자: "+input+" 컴퓨터: "+str[i]+" 졌습니다."); //이중으로 if조건문을 사용했습니다. 가위일때 바위라면과 가위일때 보라면을 나타냅니다.

else if(str[i].equals("보"))

System.out.println("사용자: "+input+" 컴퓨터: "+str[i]+" 이겼습니다.");

}

if(input.equals("바위")) {

if(str[i].equals("가위"))

System.out.println("사용자: "+input+" 컴퓨터: "+str[i]+" 이겼습니다.");

else if(str[i].equals("보"))

System.out.println("사용자: "+input+" 컴퓨터: "+str[i]+" 졌습니다.");

}

if(input.equals("보")) {

if(str[i].equals("가위"))

System.out.println("사용자: "+input+" 컴퓨터: "+str[i]+" 졌습니다.");

else if(str[i].equals("바위"))

System.out.println("사용자: "+input+" 컴퓨터: "+str[i]+" 이겼습니다.");

}

 

}

}

 

}

 

728x90