주요내용 : switch~case 마무리, 반복문(for, while, do ~ while) - 구구단출력, 별찍기
//switch ~ case
//다음과 같이 주민등록번호가 존재합니다. 123456-1234567
//이 주민번호를 가지고 남성인지, 여성인지 판별하여 출력합니다.
//1, 3 : 남성, 2,4 : 여성, 1900년대 :1,2 2000년대 : 3,4
String juminbunho = "123456-4234567";
char gubun = juminbunho.charAt(7);
if(gubun == '1' || gubun == '3') {
System.out.println("남성입니다.");
}else {
System.out.println("여성입니다.");
}
//위의 소스를 switch~case 버전으로 변경하세요.
String juminbunho = "123456-5234567";
char gubun = juminbunho.charAt(7);
switch(gubun) {
case '1': //case 붙여쓰면 바로 아래 나오는 거에 같이 해당된다고 생각하면 됨.
case '3':
System.out.println("남성입니다.");
break;
case '2':
case '4':
System.out.println("여성입니다.");
break;
default :
System.out.println("잘못입력하셨습니다.");
break;
}
//문제] 임의의 수 100이 주어집니다.
//다음과 같은 조건을 만족하는 값을 출력하세요.
//1. 7로 나눌대, 나머지가 1인 수
//2. 7로 나눌대, 나머지가 2 또는 3인 수
//3. 7로 나눌대, 나머지가 4 또는 5인 수
//4. 7로 나눌대, 나머지가 6인 수
//5. 7로 나누어 떨어지는 수.
//if문
int x = 100;
if(x%7==1) {
System.out.println("x[" + x + "]는 나눌 때, 나머지가 1인 수");
}else if(x%7==2 || x%7==3) {
System.out.println("x[" + x + "]는 나눌 때, 나머지가 2 또는 3인 수");
}else if(x%7==4 || x%7==5) {
System.out.println("x[" + x + "]는 나눌 때, 나머지가 4 또는 5인 수");
}else if(x%7==6) {
System.out.println("x[" + x + "]는 나눌 때, 나머지가 6인 수");
}else if(x%7==0){
System.out.println("x[" + x + "]는 나누어 떨어지는 수");
}
//switch문
int x = 777;
switch(x%7) {
case 1 :
System.out.println("x[" + x + "]는 나눌 때, 나머지가 1인 수");
break;
case 2 :
case 3 :
System.out.println("x[" + x + "]는 나눌 때, 나머지가 2 또는 3인 수");
break;
case 4 :
case 5 :
System.out.println("x[" + x + "]는 나눌 때, 나머지가 4 또는 5인 수");
break;
case 6 :
System.out.println("x[" + x + "]는 나눌 때, 나머지가 6인 수");
break;
default :
System.out.println("x[" + x + "]는 나눌 때, 나누어 떨어지는 수");
break;
}
--------------------------------------------------------------------------
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.DecimalFormat;
import java.util.Scanner;
//반복문 : 조건문이 처리하고자하는 내용을 반복.
//종류 : for, while, do ~ while
// for의 형식
// for(초기값; 조건식; 증감식){
// ..........;
// }
// while(조건식){ // 먼저 조건식을 체크.
// .....;
// }
// do{ // 적어도 한번은 실행합니다.
// ......;
// while(조건식);
public class JavaTwo {
public static void main(String[] args) throws NumberFormatException, IOException {
//1 ~ 100 사이의 합계를 구하세요.
// int i, sum = 0; //매번 초기화해야 오류가 안난다.
//1. for문
// 초기값 조건식 증감식
for(i = 0; i<=100; i++) { // i++ 는 i+=1 와 i=i+1 과 같다.
sum+=i;
}
System.out.println("for문 : 1 ~ 100 사이의 합은 : " + sum); //5050
//2. while문
while(i<=100) {
sum+=i;
i++;
}
System.out.println("while문 : 1 ~ 100 사이의 합은 : " + sum); // 5050
//3. do ~ while문
int sum2=0, i2 = 0;
do{
sum2+=i2;
i2++;
}while(i2<=100);
System.out.println("do ~ while문 : 1 ~ 100 사이의 합은 : " + sum2); //5050
//문제] 1 ~ 100 사이의 수 중에서 홀수의 합을 구하여 출력하세요.
//단, for, while, do~while을 사용합니다.
//1. for문
for(i = 0; i<=100; i++) {
if(i%2 == 0)
continue; //분기문 : 건너뛰기, skip
sum+=i;
}System.out.println("for문 : 1 ~ 100 사이의 수 중에서 홀수의 합은 : " + sum); //2500
//2. while문
while(i<=100){
if(i%2 == 0)
continue;
sum+=i;
}System.out.println("while문 : 1 ~ 100 사이의 수 중에서 홀수의 합은 : " + sum); //2500
//3. do ~ while문
int sum2=0, i2 = 0;
do{
if(i2%2 == 1) {
sum2+=i2;
}
i2++;
}while(i2<=100);
System.out.println("do ~ while문 : 1 ~ 100 사이의 수 중에서 홀수의 합은 : " + sum2); //2500
//문제] 1 ~ 100 사이의 수 중에서 짝수의 합을 구하여 출력하세요.
//단, for, while, do~while을 사용합니다.
//1. for문
for(i = 0; i<=100; i++) {
if(i%2 == 0)
sum+=i;
}System.out.println("for문 : 1 ~ 100 사이의 수 중에서 짝수의 합은 : " + sum); //2550
//2. while문
while(i<=100){
if(i%2 == 0)
sum+=i;
}System.out.println("while문 : 1 ~ 100 사이의 수 중에서 짝수의 합은 : " + sum); //2550
//3. do ~ while문
int sum2=0, i2 = 0;
do{
if(i2%2 == 0) {
sum2+=i2;
}
i2++;
}while(i2<=100);
System.out.println("do ~ while문 : 1 ~ 100 사이의 수 중에서 짝수의 합은 : " + sum2); //2550
//감소하기 : 카운트다운
for(int i = 100; i>0; i--) {
System.out.println(i);
}
int i = 100; //초기값을 밖에서 선언
for( ; ; ) { // 초기값, 증감식 생략가능.
if(i>0) { // 조건식 for문 안쪽에서 선언.
System.out.println(i);
i--; // 증감식 for문 마지막에 선언.
}
}
int count = 0;
for(int i = 100; i>=0; i-=10) {
System.out.println(i);
count+=1;
}
System.out.println("갯수는 " + count); // 갯수출력(11)
//1~100사이의 수 중에서 5의 배수의 합을 구하고 카운트하여 출력하세요.
//1-1. for문(if문)
int i, sum = 0;
for(i = 1; i<=100; i++) {
if(i%5 ==0) {
sum+=i;
}
}
System.out.println("for문 : 1 ~ 100 사이의 수중에서 5의 배수의 합은 : " + sum); // 1050
//1-2. for문(if문 안쓰고 5의 배수로 반복.)
int i, sum = 0;
for(i = 5; i<=100; i+=5) { //
sum+=i;
}
System.out.println("for문 : 1 ~ 100 사이의 수중에서 5의 배수의 합은 : " + sum); // 1050
//2. while문
while(i<=100) {
sum+=i;
i+=5;
}
System.out.println("while문 : 1 ~ 100 사이의 수중에서 5의 배수의 합은 : " + sum); // 1050
//3. do ~ while문
int sum2=0, i2 = 0;
do{
sum2+=i2;
i2+=5;
}while(i2<=100);
System.out.println("do ~ while문 : 1 ~ 100 사이의 수중에서 5의 배수의 합은 : " + sum2); //1050
//문제] 1부터 1씩 증가하여 최초로 합이 3000이 넘는 정수의 값은 얼마인가?
//1.for문
int i, sum = 0;
for(i = 1; ; i++) {
sum+=i;
if(sum >= 3000) {
System.out.println(i); // 77
System.out.println(sum); // 3003
break;
}
}
//2. while문
int i = 0 , sum = 0;
while(sum<=3000) {
i++;
sum+=i;
}
System.out.println(i); // 77
System.out.println(sum); // 3003
//3. do ~ while문
int sum2=0, i2 = 0;
do{
i2++;
sum2+=i2;
}while(sum2<=3000);
System.out.println(i2); // 77
System.out.println(sum2); // 3003
//문제] 구구단을 출력합니다. 2단~ 19단
//1. for문
int i = 1, j = 1;
for(i=2;i<=19;i++) {
for(j=1;j<=9;j++) {
System.out.println(i + "x" + j + "=" +i*j);
}
}
//2. while문
int i = 2, j = 1;
while(i<=19) {
while(j<=9) {
System.out.println(i + "x" + j + "=" +i*j);
j++;
}
i++;
j=1; //초기화!!(구구단이므로)
}
//문제] 출력을 원하는 단을 출력하도록 프로그래밍 하세요.
Scanner sc = new Scanner(System.in);
System.out.println("출력하고자 하는 구구단 단수를 입력하세요.");
int i = sc.nextInt();
int j = 1;
for(j=1; j<=9;j++) {
System.out.println(i + "x" + j + "=" +i*j);
}
//강사님 풀이
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("출력하고자 하는 구구단 단수를 입력하세요.");
int gugu = Integer.parseInt((br.readLine()));
System.out.println("***" + gugu + "단***");
for(int j=1; j<=9;j++) {
System.out.println(gugu + "x" + j + "=" +(gugu*j));
}
//문제] 구구단 중에서 홀수단을 출력하되, 단의 수만큼 출력되도록 합니다.
for(int i=1;i<=19;i+=2) { //i의 값을 따로 2n-1 식으로 변수를 주지 않고, 증가값을 홀수값이 되도록 증가하도록 설정.
for(int j=1;j<=i;j++) {
System.out.println(i + "x" + j + "=" +i*j);
}
System.out.println();
}
//문제] 별찍기 - #을 10개씩 3줄에 출력하세요.
//1. 노가다방법
for(int i = 0; i<10; i++) {
System.out.print("#");
}
System.out.println();
for(int i = 0; i<10; i++) {
System.out.print("#");
}
System.out.println();
for(int i = 0; i<10; i++) {
System.out.print("#");
}
System.out.println();
//2. 좋은 방법
for(int i = 0; i<3; i++) {
for(int j = 0 ; j<10 ; j++) {
System.out.print("#");
}
System.out.println();
}
//문제] 별찍기 - #을 5행으로 3개씩 출력하세요.
for(int i = 0; i<5; i++) {
for(int j = 0 ; j<3 ; j++) {
System.out.print("#");
}
System.out.println();
}
//문제] 다음과 같이 출력 되도록 합니다.
// 28 27 26
// 25 24 23
// 22 21 20
int num = 28;
for(int i = 0; i<3; i++) {
for(int j = 0 ; j<3 ; j++) {
System.out.print(num + "\t"); // \t : tab키
num--;
}
System.out.println();
}
//문제] 다음과 같이 출력 되도록 합니다.
// 1 2 3 4 5
// 6 7 8 9 10
// 11 12 13 14 15
int num = 1;
for(int i = 0; i<3; i++) {
for(int j = 0 ; j<5 ; j++) {
System.out.print(num + "\t");
num++;
}
System.out.println();
}
//문제] 다음과 같이 출력되도록 합니다.
// 12345
// 12345
// 12345
// 12345
// 12345
for(int i = 0; i<5; i++) {
for(int j = 1 ; j<=5 ; j++) {
System.out.print(j);
}
System.out.println();
}
System.out.println();
//문제] 다음과 같이 출력되도록 합니다.
// *
// **
// ***
// ****
// *****
for(int i = 1; i<=5; i++) {
for(int j = 1 ; j<=i ; j++) {
System.out.print("*");
}
System.out.println();
}
System.out.println();
//문제] 다음과 같이 출력되도록 합니다.
// 1
// 12
// 123
// 1234
// 12345
for(int i = 1; i<=5; i++) {
for(int j = 1 ; j<=i ; j++) {
System.out.print(j);
}
System.out.println();
}
System.out.println();
//문제] 다음과 같이 출력되도록 합니다.
// *****
// ****
// ***
// **
// *
for(int i = 1; i<=5; i++) {
for(int j = 5 ; j>=i ; j--) {
System.out.print("*");
}
System.out.println();
}
System.out.println();
//문제] 다음과 같이 출력되도록 합니다.
// *****
// ****
// ***
// **
// *
for(int i = 5; i>=1; i--) {
for(int j = 1; j<=5-i; j++) {
System.out.print(" ");
}
for(int k = 1; k<=i; k++) {
System.out.print("*");
}
System.out.println();
}
System.out.println();
//문제] 다음과 같이 출력되도록 합니다.
// 12345
// 1234
// 123
// 12
// 1
for(int i = 5; i>=1; i--) {
for(int j = 1; j<=5-i; j++) {
System.out.print(" ");
}
for(int k = 1; k<=i; k++) {
System.out.print(k);
}
System.out.println();
}
System.out.println();
//문제] 다음과 같이 출력되도록 합니다.
// 1 2 3 4 5
// 1 2 3 4
// 1 2 3
// 1 2
// 1
for(int i = 5; i>=1; i--) {
for(int j = 1 ; j<=i ; j++) {
System.out.print(j + " ");
}
System.out.println();
}
System.out.println();
//문제] 다음과 같이 출력되도록 합니다.
// 1
// 1 2
// 1 2 3
// 1 2 3 4
//1 2 3 4 5
for(int i = 1; i<=5; i++) {
for(int j = 1 ; j<=5-i ; j++) {
System.out.print(" ");
}
for(int k = 1 ; k<=i ; k++) {
System.out.print(k + " ");
}
System.out.println();
}
System.out.println();
//문제] 다음과 같이 출력되도록 합니다.
//1 2 3 4 5
// 1 2 3 4
// 1 2 3
// 1 2
// 1
for(int i = 5; i>=1; i--) {
for(int j = 1 ; j<=5-i ; j++) {
System.out.print(" ");
}
for(int k = 1 ; k<=i ; k++) {
System.out.print(k + " ");
}
System.out.println();
}
System.out.println();
//문제] 다음과 같은 처리를 하도록 프로그램을 작성하세요.
//-----------------------
//1.예금 2.출금 3.잔액조회 4.종료
//-----------------------
//강사님 풀이법
String str;
String balance = null;
int total = 0;
boolean run = true;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
while(run) {
System.out.println("----------------------------");
System.out.println("1.예금 | 2.출금 | 3.잔고 | 4.종료 ");
System.out.println("----------------------------");
System.out.println("선택>> ");
str = br.readLine();
switch(str) {
case "1":
System.out.println("예금액>>");
balance = br.readLine();
total += Integer.parseInt(balance);
break;
case "2":
System.out.println("출금액>>");
balance = br.readLine();
total -= Integer.parseInt(balance);
break;
case "3":
System.out.println("잔고>>");
System.out.println(total);
break;
case "4":
run = false;
System.out.println("프로그램을 종료합니다.");
break;
}
System.out.println();
}
}
}