티스토리 뷰
자바 기초 | do while, switch, case, if else, for, else if, break, random 활용한 연습문제 스스로 풀기
프루브프로젝트 2021. 4. 30. 20:21
do while, switch, case, if else, for, else if, break, random, continue 활용한 연습문제 스스로 풀기
1. 메인 메소드 포함한 실행용 클래스 작성
package logic.test;
//TestMain 에서 Menu 사용
import logic.view.Menu;
public class TestMain {
public static void main(String[] args) {
System.out.println("- 변수/연산자/제어문 연습 -");
// <연습 1>
// TestMain 클래스의 main() 메소드에 구현 내용
// => Menu 클래스의 displayMenu() 메소드 실행되게 작성함
Menu.displayMenu();
}
}
2. do while switch case 활용하여 메뉴 클래스 작성
package logic.view;
import java.util.Scanner;
//Menu 에서 Function 사용
import logic.controller.Function;
public class Menu {
// <연습 2>
static Function ftion = new Function();
public static void displayMenu() {
Scanner sc = new Scanner(System.in);
int no;
do {
System.out.println("------------프로그램 시작------------");
System.out.println("1. 간단 계산기");
System.out.println("2. 작은수에서 큰수까지 합계구하기");
System.out.println("3. 신상정보 확인하기");
System.out.println("4. 학생정보 확인하기");
System.out.println("5. 별과 숫자 출력하기");
System.out.println("6. 난수까지의 합게 구하기");
System.out.println("7. 구구단");
System.out.println("8. 주사위 숫자 알아맞추기 게임");
System.out.println("9. 프로그램 종료");
System.out.print("메뉴 번호 입력 : ");
no = sc.nextInt();
switch (no) {
case 1: ftion.calculator(); break;
case 2: ftion.totalCalculator(); break;
case 3: ftion.profile(); break;
case 4: ftion.sungjuk(); break;
case 5: ftion.printStarNumber(); break;
case 6: ftion.sumRandomNumber(); break;
case 7: ftion.continueGugudan(); break;
case 8: ftion.shutNumber(); break;
case 9: System.out.println("------------프로그램 종료------------"); break;
}
} while (true);
}
}
3. 기능제공용 클래스에 구현될 프로그램의 내용 작성
package logic.controller;
import java.util.Random;
import java.util.Scanner;
public class Function {
// -----------<연습3>-----------
// => 메뉴에서 실행시킬 메소드들을 작성함 : 모두 non-static 메소드로 작성할 것
// => 키보드 입력을 위한 Scanner 클래스에 대한 레퍼런스 변수를 필드로 선언함
private Scanner sc = new Scanner(System.in);
// -----------<연습4>-----------
public void calculator() {
System.out.println("----------1. 간단 계산기-----------");
//switch 사용
System.out.print("계산할 첫번째 숫자를 입력하세요 : ");
int num1 = sc.nextInt();
System.out.print("계산할 두번째 숫자를 입력하세요 : ");
int num2 = sc.nextInt();
System.out.print("연산문자 입력[+, -, *, /] : ");
char cal = sc.next().charAt(0);
switch (cal) {
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으로 나눌 수 없습니다.");
System.out.println(num1 + " / " + num2 + " = " + 0);
}else {
System.out.println(num1 + " / " + num2 + " = " + (num1 / num2));
}
break;
}
}
// ----------<연습5>----------
public void totalCalculator() {
System.out.println("----------2. 작은수에서 큰수까지 합계구하기-----------");
System.out.print("정수1 입력 : ");
int num1 = sc.nextInt();
System.out.print("정수2 입력 : ");
int num2 = sc.nextInt();
int max = 0;
int min = 0;
int sum = 0;
if (num1 > num2) {
max = num1;
min = num2;
} else if (num1 < num2) {
max = num2;
min = num1;
} else if (num1 == num2) {
System.out.println("정수1과 정수2는 다른 수여야 합니다.");
return;
}
for (int i = min; i < max; i++) {
sum = sum + i;
}
System.out.println(min + "부터 " + max + "까지 " + "정수들의 합계 : " + sum);
}
// ----------<연습6>----------
public void profile() {
System.out.println("----------3. 신상정보 확인하기-----------");
System.out.println("본인 확익을 위해 필수 개인정보를 입력받습니다.");
System.out.print("이름 : ");
String name = sc.next();
System.out.print("나이 : ");
String age = sc.next();
System.out.print("성별 : ");
String gender = sc.next();
System.out.print("성격 : ");
String unique = sc.next();
System.out.println("입력하신 내용을 확인해주세요.");
System.out.println("이름 : " + name);
System.out.println("나이 : " + age);
System.out.println("성별 : " + gender);
System.out.println("성격 : " + unique);
}
// ----------<연습7>----------
public void sungjuk() {
System.out.println("----------4. 학생정보 확인하기-----------");
System.out.println("학생의 정보를 입력해주세요.");
System.out.print("학생이름 : ");
String name = sc.next();
System.out.print("학년 : ");
int grade = sc.nextInt();
System.out.print("반 : ");
int classs = sc.nextInt();
System.out.print("번호 : ");
int number = sc.nextInt();
System.out.print("성별(M/F) : ");
char gender = sc.next().charAt(0);
System.out.print("성적 : ");
double score = sc.nextDouble();
//String result;
char result = 0;
if(score >= 90) {
result = 'A';
}else if(score >= 80) {
result = 'B';
}else if(score >= 70) {
result = 'C';
}else if(score >= 60) {
result = 'D';
}else if(score < 60) {
result = 'F';
}
System.out.println(grade + "학년 " + classs + "반 " + number + "번 " + (gender == 'M' ? "남학생" : "여학생") + " " + name + "의 점수는 " + score + "이고, " + result + "학점입니다.");
}
// ----------<연습8>----------
public void printStarNumber() {
System.out.println("----------5. 별과 숫자 출력하기-----------");
System.out.print("정수 입력[출력할 줄 수] : ");
int num = sc.nextInt();
int line = 0;
int star = 0;
if(num > 0) {
for (line = 1; line <= num; line++) {
for (star = 1; star < line; star++) {
System.out.print("*");
}
for (star = 1; star == (line-(line-1)); star++) {
System.out.print(line);
}
System.out.println();
}
} else if(num < 0) {
System.out.println("양수가 아닙니다.");
}
System.out.println();
}
// ----------<연습9>----------
public void sumRandomNumber() {
System.out.println("----------6. 난수까지의 합계 구하기-----------");
int value = new Random().nextInt(100) + 1;
int i = 0;
int sum = 0;
for (i = 1; i <= value; i++) {
sum = sum + i;
}
System.out.println("임의로 선택된 정수 : " + value);
System.out.println("1부터 정수까지의 합계 : " + sum);
}
// ----------<연습10>----------
public void continueGugudan() {
System.out.println("----------7. 구구단-----------");
while(true)
{
System.out.print("정수 하나 입력 : ");
int num = sc.nextInt();
if(num < 0) {
System.out.println("양수가 아닙니다.");
break;
}
for(int i = 1; i <=9; i++) {
if(i % num == 0) {
System.out.print("");
}else {
System.out.println(num + " * " + i + " = " + num * i);
}
}
break;
}
}
// ----------<연습11>----------
public void shutNumber() {
System.out.println("----------8. 주사위 숫자 알아맞추기 게임-----------");
do {
int num1 = 0;
int num2 = 0;
int sum = 0;
num1 = (int)(Math.random() * (6-1+1) + 1);
num2 = (int)(Math.random() * (6-1+1) + 1);
sum = num1 + num2;
System.out.println("주사위1 : " + num1);
System.out.println("주사위2 : " + num2);
System.out.println("주사위1과 주사위2의 합 : " + sum);
System.out.println("--두 주사위의 합이 주사위1 또는 주사위2의 값과 같은가?--");
if (sum == num1 || sum == num2) {
System.out.println("맞췄습니다.");
}else {
System.out.println("틀렸습니다.");
}
System.out.print("계속하시겠습니까?(y/n) : ");
String ch = sc.next();
if (ch.equals("n") || ch.equals("N")) {
System.out.println("종료합니다.");
} else if (ch.equals("y") || ch.equals("Y")) {
continue;
}
break;
} while(true);
}
}
<연습 3>
패키지 선언 : logic.controller
클래스명 : public class Function
=> 메뉴에서 실행시킬 메소드들을 작성함 : 모두 non-static 메소드로 작성할 것
=> 키보드 입력을 위한 Scanner 클래스에 대한 레퍼런스 변수를 필드로 선언함
----------------------------------------
<연습 4>
=> 메소드 작성 : public void calculator(){}
=> 처리내용
1. 정수 두 개와 연산문자 하나를 키보드로 입력받음
첫번째 정수 : 12
두번째 정수 : 5
연산문자 : x
2. 두 정수값은 int 변수에 저장
3. 연산문자는 char 변수에 저장
4. switch 문 사용
: 연산 문자가
'+' 이면, 두 정수의 합 계산
'-' 면 , 두 정수의 차 계산
'x' 또는 'X' 이면, 두 정수의 곱
'/' 이면 , 두 정수의 나누기 몫
단, 나누는 수(두번째 정수)가 0이면
"0으로 나눌 수 없습니다." 출력되게 하고,
결과값 0 처리함을 계산처리 후
5. 결과 출력
예> 10 x 20 = 200
----------------------------------------
<연습 5>
=> 메소드명 : public void totalCalculator(){}
=> 처리내용
1. 키보드로 두 개의 정수를 입력받음
2. 두 정수중 작은 값을 시작값으로,
큰 값을 종료값으로 사용함
3. 작은값에서 큰값까지 정수의 합계를 구함
: for 문 사용
예>int i
12 3 입력시
3 ~ 12 까지 정수의 합을 구함
3+4+5+....+12
4. 합계 출력 처리
3부터 12까지 정수들의 합계 : 결과값
----------------------------------------
<연습 6>
=> 메소드명 : public void profile(){}
=> 처리내용 : 신상정보들을 자료형에 맞춰 변수에 기록하고,
변수에 기록된 값을 출력 확인함.
실행내용 : 콘솔창에 본인의 신상정보가 출력되게 함
출력예>
이름 : 엘리스
나이 : 17 세
성별 : 여자
성격 : 창의적임
----------------------------------------
<연습 7>
=> 메소드명 : public void sungjuk()
=> 처리내용
변수 선언하고, 키보드로 입력받은 값들을 변수에 기록하고
변수값을 화면에 출력 확인함
=> 변수
학생이름 (String)
학년 (int)
반 (int)
번호 (int)
성별(M/F) (char) //문자열로 입력받은 후, 문자하나 분리해야 함
성적 (double) //소숫점 아래 둘째자리까지 입력받음
학점 (char)
점수가
90 이상이면 학점을 A 로 처리
80 이상 90 미만 B
70 이상 80 미만 C
60 이상 70 미만 D
60 미만 F
출력예>
3학년 2반 25번 남학생 홍길동의 점수는 95.5이고, A 학점입니다.
** 남학생/여학생은 성별 변수의 값을 사용해서 삼항연산자로 처리
----------------------------------------
<연습 8>
정수를 하나 입력받아, 그 수가 양수일 때만
입력된 수를 줄 수로 적용하여 다음과 같이 출력되게 함
- if문과 이중 for문 사용
- 메소드명 : public void printStarNumber(){}
ex>
정수 하나 입력 : 5
1
*2
**3
***4
****5
================
정수 하나 입력 : -5
양수가 아닙니다.
----------------------------------------
<연습 9>
1~100 사이의 정수중 임의의 정수를 하나 발생시켜
1부터 발생된 정수까지의 합계를 구하여 출력함
- 메소드명 : public void sumRandomNumber(){}
----------------------------------------
<연습 10>
정수를 하나 입력받아, 그 수가 양수일 때만 그 수의 구구단이 출력되게 함.
단, 곱하기 결과가 입력받은 정수의 배수인 값을 출력에서 제외함.
- if문과 for문, continue문 사용
- 메소드명 : public void continueGugudan(){}
ex>
단수 : 3
제외할 배수 : 9
3 * 1 = 3
3 * 2 = 6
3 * 4 = 12
3 * 5 = 15
3 * 7 = 21
3 * 8 = 24
================
정수 하나 입력 : -7
양수가 아닙니다.
----------------------------------------
<연습 11>
메소드명 : public void shutNumber(){}
구현내용 :
1) 두 개의 주사위가 만들어 낼 수 있는 모든 경우의 수중(random)
2) 두 주사위 눈의 합이 입력된 수와 같은 경우 "맞췄습니다." 출력
3) 입력값과 다르면 "틀렸습니다." 출력함.
4) do ~ while 문으로 반복되게 함
5) "계속하시겠습니까?(y/n) : " 에서 'n' 또는 'N' 입력시 반복종료됨
'Programming > Java' 카테고리의 다른 글
자바 기초 Basic of Java | What are Class and Object? 클래스와 객체 (0) | 2021.05.12 |
---|---|
자바 기초 Basic of Java | 객체지향언어 Object-oriented language (0) | 2021.05.12 |
자바 기초 | 변수와 연산자 연습문제 스스로 풀기, 합차곱나누기몫, 면적둘레, 문자열문자추출, if else 합격불합격, 삼항연산자 (0) | 2021.04.30 |
자바 기초 | 이클립스, 패키지, 클래스 생성, 메인메소드 (0) | 2021.04.25 |
자바 기초 | 객체지향 언어 자바 이해하기, 메소드, 클래스, 출력 (0) | 2021.04.22 |
보던 글 목록 : 브라우저 뒤로 가기 메인 화면 : 좌측 상단 아이콘
🍍 I am becoming AI expert who can develop cool things by coding.