고래씌
[JAVA] 4-3. 제어문(for 문) 본문
1. 반복문(for 문)
: 프로그램 흐름을 제어하는 제어문 중 하나
어떤 실행코드를 '반복'적으로 수행시켜줌
크게 두 종류로 나뉨(for, while(do-while))
[표현법]
for(초기식; 조건식; 증감식) { // 세미콜론을 통해서 각각의 식을 구분하며 무조건 세미콜론 2개가 존재해야함
반복적으로 실행시키고자 하는 코드;
}
- 초기식 : 반복문이 시작될 때 "초기에 딱 한번만 실행"되는 구문
(반복문에서 사용할 변수를 선언 및 초기화 할 때 사용)
- 조건식 : 반복문이 수행될조건을 작성하는 구문
조건식의 결과가 true면 반복문이 실행되고, false면 반복문을 멈추고 빠져나온다.
(보통 초기식에 사용한 변수를 가지고 조건식을 작성)
- 증감식 : 반복문을 제어하는 변수값을 증감시키는 구문
(보통 초기식에 사용한 변수를 가지고 증감식을 작성)
=> false가 나오면 for문을 빠져나온다!
★ 매번 조건식의 조건검사 결과값을 가지고 조건이 true일 경우만 반복해서 실행한다.
★ 알아둘 것 : for문 안에 초기식, 조건식, 증감식 각각 생략이 가능하긴 함. 단, 반드시 ;은 작성해줘야한다.
※ for(;;) { // 초기식, 조건식, 증감식이 없더라도 문법적인 오류는 아님. 다만 무한반복으로 실행된다.
}
public void method2() {
// 1~5까지 순차적으로 출력
// 1 2 3 4 5
// i값이 1에서부터 6보다 작을대까지 1씩 증가시키면서 반복 수행
for(int i=1; i<6; i++) { // 1 2 3 4 5 6(false)
System.out.print(i+" ");
}
System.out.println(); // 줄바꿈
// 5 4 3 2 1
for(int i=5; i>0; i--) {
System.out.print(i+" ");
}
}
public void method3() {
// i값이 1에서부터 10사이의 홀수만 출력
// 1 3 5 7 9
for(int i=1; i<=10; i+=2) {
System.out.print(i+" ");
}
System.out.println();
for(int i=1; i<=10; i++) {
if(i%2 == 1) {
System.out.print(i+ " ");
}
}
}
public void method4() {
// 1 2 3 4 5 6 7 8 9 10
for(int i=0; i<=9; i++) {
System.out.print(i+ 1 +" ");
}
}
public void method5() {
// 1~10까지의 총 합계
// 방법 1.
// int sum = 1+2+3+4+5+..+10;
// 방법 2.
int sum = 0;
for(int i=1; i<=10; i++) {
sum += i;
}
System.out.println("1부터 10까지의 총 합계? " + sum); // 55
}
public void method6() {
// 1에서부터 사용자가 입력한 숫자끼리의 모든 값을 더해서 출력해보기
Scanner sc = new Scanner(System.in);
System.out.print("정수 입력 : ");
int num = sc.nextInt();
int sum = 0;
for(int i=1; i<=num;) { // 증감식을 생략하는 케이스!!!
sum += i++;
}
System.out.println("1부터 " + num + "가지의 총 합계 : " + sum);
}
2. 랜덤값
1) java.lang.Math 클래스
java.lang.Math 클래스에 이미 정의되어있는 random()메소를 호출하여 매번 다른 랜덤값을 얻어올 수 있음.
[사용방법]
Math.random(); => 반환형이 실수자료형
0.0 <= 랜덤값 < 1.0 사이에 랜덤값을 구함
ex) 1~10사이의 랜덤값 구하기
0.0 <= 랜덤값 < 1.0
10 곱하기
☞ 0.0 <= 랜덤값 < 10.0
1 더하기
☞ 1.0 <= 랜덤값 < 11.0
소수점 버리기
☞ 1 <= 랜덤값 <= 10
[표현법]
(int) (Math.random() * 10 + 1) => 위에 것을 표현한 것
Math.random() * 출력을 하고자하는 갯수 + 시작하고 싶은 수
랜덤값 범위 : 시작수 ~ (시작수+출력을 하고자하는 갯수)
public void method8() {
// 1부터 매번 달라지는 랜덤값(1~10사이) 까지의 총 합계
// double random1 = Math.random();
int random = (int) (Math.random() * 10 + 1);
System.out.println(random);
int sum = 0;
for(int i=1; i<=random; i++) {
sum += i;
}
System.out.printf("1부터 %d까지의 총 합은 %d 입니다. ", random, sum);
}
3. String 반복문
Q. 사용자에게 문자열을 직접 입력받아서 각 인덱스별로 문자를 하나씩 뽑아서 출력.
- apple 길이 : 5
01234
- kiwi 길이 : 4
0123
★ 문자열의 마지막 인덱스는 문자열의 길이 -1
★ 추출하고자하는 인덱스의 값의 범위는 0 ~ (문자열의길이 -1)
★ 문자열의 길이를 알려주는 메소드 문자열.length(); => 문자열 내부에서 사용한 length()는 함수이다!!!★
public void method10() {
// 사용자에게 문자열을 직접 입력받아서
// 각 인덱스별로 문자를 하나씩 뽑아서 출력.
Scanner sc = new Scanner(System.in);
System.out.print("문자열 입력: ");
String str = sc.nextLine();
// 문자열의 길이를 알려주는 메소드 문자열.length();
System.out.println("입력한 문자열의 길이 : " + str.length());
for(int i=0; i<=str.length()-1; i++) { // apple 입력시 : i => 0 1 2 3 4
System.out.println(str.charAt(i));
}
}
□ 구구단 출력 예시문
public void method12() {
// 사용자가 입력한 단을 출력
// 단수는 2~9 까지의 범위
// 범위를 벗어난 단수를 입력시 "잘못입력했습니다(2~9사이의 정수 입력)" 출력
Scanner sc = new Scanner(System.in);
System.out.print("단 수(2~9) 입력 : ");
int dan = sc.nextInt();
if(dan >= 2 && dan <= 9) {
for(int i=1; i<=9; i++) {
System.out.printf("%d * %d = %d\n", dan, i, (dan*i));
}
}else {
System.out.println("잘못입력했습니다(2~9사이의 정수 입력)");
}
}
4. 중첩 for문
public void method13() {
// 1 2 3 4 5
// 1 2 3 4 5
// 1 2 3 4 5
for(int i=1; i<=3; i++) {
for(int j=1; j<=5; j++) {
System.out.print(j + " ");
}
System.out.println();
}
}
public void method14() {
// ****
// ****
// ****
// ****
// 중첩반복문 활용해서 출력해보기
for(int i=0; i<4; i++) {
for(int j=0; j<4; j++) {
System.out.print("* ");
}
System.out.println();
}
}
□ 중첩 for문 안에 if문 활용
public void method15() {
// 1*** ==> 1행 1열일 때 => 숫자 1표시
// *2** ==> 2행 2열일 때 => 숫자 2표시
// **3* ==> 3행 3열일 때 => 숫자 3표시
// ***4
for(int i=1; i<=4; i++) {
for(int j=1; j<=4; j++) {
if(i==j) {
System.out.print(j);
}else {
System.out.print("*");
}
}System.out.println();
}
}
public void method16() {
// 2단부터 ~ 9단까지 모든 단을 출력
// 각, 단 시작시 --- x단 --- 를 출력
// 2 X 1 = 2
// 2 X 2 = 4
for(int i=2; i<=9; i++) {
System.out.printf("--- %d단 ---\n", i);
for(int j=1; j<=9; j++) {
System.out.printf("%d * %d = %d", i,j,i*j);
System.out.println();
}
}
}
'JAVA > JAVA 기초' 카테고리의 다른 글
[JAVA] 4-4. 제어문(while문), break, continue (0) | 2023.10.06 |
---|---|
[JAVA] 4-4. 제어문(반복문 실습문제) (0) | 2023.10.06 |
[JAVA] 4-2. 제어문(실습문제) (0) | 2023.10.05 |
[JAVA] 4-1. 제어문(Switch) (0) | 2023.10.05 |
[JAVA] 4. 제어문(if) (0) | 2023.10.04 |