2단에서 9단까지 구구단을 출력해보자.
public class Test {
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) { // 1에서 9까지 반복출력
for (int j = 2; j <= 9; j++) { // 2에서 9까지 반복출력
System.out.printf("%d * %d = %d \t ", j, i, i * j);
} // ** 첫 번째 값에는 j, 두 번째 값에는 i를 넣어줘야 한다.
System.out.println(" ");
}
}
}
public class Test {
public static void main(String[] args) {
int i = 1;
int j = 2;
while (i <= 9) {
while (j <= 9) {
System.out.printf("%d * %d = %d\t", j, i, i * j);
j++;
}
i++;
j = 2;
System.out.println(" ");
}
}
}
💡 위쪽에 j를 2라고 초기화 했지만,그건 초기값이 2라는 이야기고,
범위가 반복문 도는동안 계속 유지되는 범위이면서 while문 돌면서 값이 증가하니까
j의 값을 다시 정의 해야 한다.
무슨 말이냐면, 자식 while문이 9까지 다 돌게되면 부모 while문으로 다시 돌아가서 다음 숫자로 나오게 되는데, 그때 j의 값이 없어지면서 첫 번째 반복열(2단)만 나오게 된다.
그래서 j의 초기값을 부모 while문 내에 다시 재정의 해줘야 된다.
하지만! 두번 초기화하지 않아도 while문 내에 위치를 조정하면 한번만 써도 된다.
public class WhileMultiplication {
public static void main(String[] args) {
int i = 1;
// 여기있던 int j 초기화 값을
while (i <= 9) {
int j = 2; //여기로 옮김! while 내에 도는 동안 유지되는 범위라서 한번만 써도 됨.
while (j <= 9) {
System.out.printf("%d * %d = %d\t", j, i, i * j);
j++;
}
i++;
System.out.println(" ");
}
}
}
❗️ 이중 while문일 때 기억해야 될 것은
자식 while문 변수를 밖에 정의하지 말고, 부모 while문 내에 써주자.