== 구구단 ==
2*1=2 3*1=3 4*1=4 5*1=5 6*1=6 7*1=7 8*1=8 9*1=9
2*2=4 3*2=6 4*2=8 5*2=10 6*2=12 7*2=14 8*2=16 9*2=18
2*3=6 3*3=9 4*3=12 5*3=15 6*3=18 7*3=21 8*3=24 9*3=27
2*4=8 3*4=12 4*4=16 5*4=20 6*4=24 7*4=28 8*4=32 9*4=36
2*5=10 3*5=15 4*5=20 5*5=25 6*5=30 7*5=35 8*5=40 9*5=45
2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 7*6=42 8*6=48 9*6=54
2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 8*7=56 9*7=63
2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 9*8=72
2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
for (int num = 1; num <= 9; num++) {
for(int dan = 2; dan<=9; dan++) {
System.out.print(dan + "*" + num + "=" +(dan * num) + "\t");
}
System.out.println("");
}
// 읽을 때 세로줄 말고 가로줄로 읽으면 도움이 된다(dan은 안쪽에서 증가, 곱하는 숫자는 내부 for문이 끝나면 prinln("")뒤 ++
=== 구구단 4단씩 끊기 ===
2*1=2 3*1=3 4*1=4 5*1=5
2*2=4 3*2=6 4*2=8 5*2=10
2*3=6 3*3=9 4*3=12 5*3=15
2*4=8 3*4=12 4*4=16 5*4=20
2*5=10 3*5=15 4*5=20 5*5=25
2*6=12 3*6=18 4*6=24 5*6=30
2*7=14 3*7=21 4*7=28 5*7=35
2*8=16 3*8=24 4*8=32 5*8=40
2*9=18 3*9=27 4*9=36 5*9=45
6*1=6 7*1=7 8*1=8 9*1=9
6*2=12 7*2=14 8*2=16 9*2=18
6*3=18 7*3=21 8*3=24 9*3=27
6*4=24 7*4=28 8*4=32 9*4=36
6*5=30 7*5=35 8*5=40 9*5=45
6*6=36 7*6=42 8*6=48 9*6=54
6*7=42 7*7=49 8*7=56 9*7=63
6*8=48 7*8=56 8*8=64 9*8=72
6*9=54 7*9=63 8*9=72 9*9=81
abcdefg
hijklmn
opqrstu
~~~~~~~~~~~~~~~~~~~~~~~
[0,0][0,1][0,2]
[1,0][1,1][1,2]
[3,0][3,1][3,2]
for (char i = 'a'; i<='u'; i++) {
System.out.print(i);
if(i == 'g' || i == 'n' || i == 'u') {
System.out.println("");
}
}
/*
abcdefg
hijklmn
opqrstu
*/
for(int i= 0; i<=3; i++) {
if(i == 2) continue;
for (int j=0; j<=2; j++) {
System.out.print("[" + i + "," + j + "]");
}
System.out.println("");
}
/*
[0,0][0,1][0,2]
[1,0][1,1][1,2]
[3,0][3,1][3,2]
*/
/*
▣ 알고 싶은 팩토리얼 수 입력 => 5엔터
>> 결과 : 5! = 120
>> 또 할래?[Y/N] => y
5! ==> 5*4*3*2*1
7! ==> 7*6*5*4*3*2*1
▣ 알고 싶은 팩토리얼 수 입력 => 0엔터
>> [경고] 자연수만 입력하세요!!
▣ 알고 싶은 팩토리얼 수 입력 => -5엔터
>> [경고] 자연수만 입력하세요!!
▣ 알고 싶은 팩토리얼 수 입력 => 1.25엔터
>> [경고] 정수만 입력하세요!!
▣ 알고 싶은 팩토리얼 수 입력 => 똘똘이엔터
>> [경고] 정수만 입력하세요!!
▣ 알고 싶은 팩토리얼 수 입력 => 4엔터
>> 결과 : 4! = 24
>> 또 할래?[Y/N] => s엔터
>> [경고] Y 또는 N 만 입력하세요!!
>> 또 할래?[Y/N] => n엔터
>>> 프로그램 종료 <<<
while문으로 풀었을 경우>
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
outer:
while (true) {
try {
System.out.println("▣ 알고 싶은 팩토리얼 수 입력 =>");
int num = Integer.parseInt(sc.nextLine());
if(num <= 0) {
System.out.println(">> [경고] 자연수만 입력하세요!");
continue;
} // 0이나 음수를 입력했을 경우 다시 시작
int result = 1; //결과 입력
for (int i = 1; i<=num; i++) {
result *= i;
}
System.out.println(num + "!=" + result);
String select = "";
while (true) {
System.out.println("또 할래? [Y/N]");
select = sc.nextLine();
if (select.equals("y") || select.equals("Y")) {
continue outer;
} else if (select.equals("n") || select.equals("N")) {
break;
} else {
System.out.println("제대로 된 값을 입력하세요.");
}
}
sc.close();
break;
} catch (NumberFormatException e) {
System.out.println(">> [경고] 정수만 입력하세요!!");
}
}
}// end of main()-------------------------------
do-while문으로 풀었을 경우>
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
outer:
while (true) {
try {
System.out.println("▣ 알고 싶은 팩토리얼 수 입력 =>");
int num = Integer.parseInt(sc.nextLine());
if(num <= 0) {
System.out.println(">> [경고] 자연수만 입력하세요!");
continue;
} // 0이나 음수를 입력했을 경우 다시 시작
int result = 1; //결과 입력
for (int i = 1; i<=num; i++) {
result *= i;
}
System.out.println(num + "!=" + result);
String select = "";
do {
System.out.println("또 할래? [Y/N]");
select = sc.nextLine();
if("y".equalsIgnoreCase(select)) { //equalsIgnoreCase()는 대소문자를 구분하지 않고 문자열 비교
break;
} else if("n".equalsIgnoreCase(select)) {
sc.close();
break outer;
} else {
System.out.println(">>[경고] Y 또는 N만 입력하세요!!");
}
} while (true);
} catch (NumberFormatException e) {
System.out.println(">> [경고] 정수만 입력하세요!!");
}
}
}
while (true) {
System.out.println("또 할래? [Y/N]");
select = sc.nextLine();
if (select.equals("y") || select.equals("Y")) {
continue outer;
} else if (select.equals("n") || select.equals("N")) {
break;
} else {
System.out.println("제대로 된 값을 입력하세요.");
}
}
/////////// 아래처럼 변화시킬 수 있다.
while (true) {
System.out.println("또 할래? [Y/N]");
select = sc.nextLine();
if("y".equalsIgnoreCase(select)) { //equalsIgnoreCase()는 대소문자를 구분하지 않고 문자열 비교
continue outer;
} else if("n".equalsIgnoreCase(select)) {
break;
} else {
System.out.println(">>[경고] Y 또는 N만 입력하세요!!");
}
}
! 반복문 앞에 '라벨명:'을 붙이면 추후에 다시 해당 부분으로 돌아가고 싶을 때 'continue 라벨명;'을 입력하여 해당 부분으로 돌아갈 수 있고,
break를 통해 아예 해당 반복문을 나와버릴 수도 있다.(다시 시작하지 않음)
/*
>>>>> 실행결과 <<<<<
▷시작 자연수 : 1엔터
▷끝 자연수 : 10엔터
1 부터 10 까지의 소수는?
2,3,5,7
1부터 10 까지의 소수의 개수? 4개
1부터 10 까지의 소수들의 합? 17
=== 프로그램 종료 ===
>>>>> 실행결과 <<<<<
▷시작 자연수 : 1엔터
▷끝 자연수 : 똘똘이엔터
>> [경고] 자연수만 입력하세요!!
▷시작 자연수 : 1엔터
▷끝 자연수 : 20엔터
1 부터 20 까지의 소수는?
2,3,5,7,11,13,17,19
1부터 20 까지의 소수의 개수? 8개
1부터 20 까지의 소수들의 합? 77
=== 프로그램 종료 ===
*/
1과 자기 자신밖에 나누어지지 않는 1 이외의 정수
// 예> 1 부터 10까지의 소수를 나타내면
// 2%2 ==> 0 | 2 는 소수
// 3%3 ==> 0 | 3 는 소수
// 4%2 ==> 0 | 4 는 소수가 아님
// 5%5 ==> 0 | 5 는 소수
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (true) {
try {
System.out.println("▷시작 자연수 :");
int num1 = Integer.parseInt(sc.nextLine());
if (num1 <= 0) {
System.out.println("자연수만 입력하세요!!");
continue;
}
System.out.println("▷끝 자연수 : ");
int num2 = Integer.parseInt(sc.nextLine());
if (num2 <= 0) {
System.out.println("자연수만 입력하세요!!");
continue;
}
//1과 자기 자신으로 나눠지면 소수
int primeSum = 0;//소수의 합
int primeNumCount = 0;
String primeNum = "";
for (int i = num1; i <= num2; i++) {//처음 - 마지막까지 체크
boolean isPrime = true; //소수인지 아닌지 검사하는 boolean
if (i == 1) {
continue;
} //1은 검사할 필요가 없다.
for (int j = 2; j < i; j++) { //자기자신의 숫자가 되기 바로 전숫자까지 돌림
if (i % j == 0) {
isPrime = false;
break; //소수가 아니다.
}
}
if (isPrime) {
primeSum += i;
primeNumCount++; //소수 개수 더함
String add = (primeNumCount == 1) ? "" : ","; //소수 개수 1일때는 "," 넣지 않음
primeNum += add + i; //소수 문자열에 더함
}
}
System.out.println(num1 + "부터" + num2 + "까지의 소수는 :" + primeNum);
System.out.println(num1 + "부터" + num2 + "까지의 소수의 개수 :" + primeNumCount);
System.out.println(num1 + "부터" + num2 + "까지의 소수의 합 :" + primeSum);
} catch (NumberFormatException e) {
System.out.println("자연수만 입력하세요!");
continue;
}
sc.close();
break;
}
}// end of main()------------------------------------
마지막 문제 ,<- 문제와 boolean을 생각못해서 꽤 헤맸다..ㅠㅠ
다양한 방식으로 풀어보는게 중요한 듯하다