for문을 이용하여 예시와 같은 *을 출력하라.

class ForTest13
{
public static void main(String[] args)
{
for (int i = 1 ; i <= 5 ; i++ )
{
for (int j = 1; j <= i ; j++ )
{
System.out.print("*");
}
System.out.println();
}
}
}
바깥쪽 for 루프는 1부터 5까지 5번 반복하며, 안쪽 for 루프는 바깥쪽 루프의 현재 값(i)만큼 별을 출력한다.

class ForTest14
{
public static void main(String[] args)
{
for (int i = 5; i >= 1 ; i-- )
{
for (int j = 1 ; j <= i ; j++ )
{
System.out.print("*");
}
System.out.println();
}
}
}
바깥쪽 for 루프는 5부터 1까지 1씩 감소하며, 안쪽 for 루프는 바깥쪽 루프의 현재 값(i)만큼 별을 출력한다.

class ForTest15
{
public static void main(String[] args)
{
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("*");
}
System.out.println();
}
}
}
바깥쪽 for 루프에서는 1부터 5까지 반복하며, 첫 번째 내부 for 루프에서는 (5 - i)만큼의 공백을 출력하고, 두 번째 내부 for 루프에서는 i만큼의 별을 출력한다.

class ForTest16
{
public static void main(String[] args)
{
for (int i = 1 ; i <= 5 ; i++ )
{
for (int j = 1 ; j <= 5-i; j++ )
{
System.out.print(" ");
}
for (int j = 1; j <= 2*i-1; j++ )
{
System.out.print("*");
}
System.out.println();
}
}
}
바깥쪽 for 루프에서는 1부터 5까지 반복하며, 첫 번째 내부 for 루프에서는 (5 - i)만큼의 공백을 출력하고, 두 번째 내부 for 루프에서는 (2 * i - 1)만큼의 별을 출력한다.

class ForTest17
{
public static void main(String[] args)
{
for (int i = 1 ; i <= 5 ; i++ )
{
for (int j = 1 ; j < i ; j++ )
{
System.out.print(" "); //왼쪽 공백 출력
}
for (int j = 1; j <= 4; j++ )
{
System.out.print("*"); //왼쪽 별 출력
}
for (int j = 1 ; j <= 10-i*2; j++)
{
System.out.print(" "); //가운데 공백 출력
}
for (int j = 1; j <= 4; j++ )
{
System.out.print("*"); //오른쪽 별 출력
}
System.out.println();
}
for (int i = 1 ; i <= 5 ; i++ )
{
for (int j = 1; j <= 5-i ; j++ )
{
System.out.print(" "); //왼쪽 공백 출력
}
for (int j = 1; j <= 4; j++ )
{
System.out.print("*"); //왼쪽 별 출력
}
for (int j = 1 ; j < i*2-1 ; j++)
{
System.out.print(" "); //가운데 공백 출력
}
for (int j = 1; j <= 4; j++)
{
System.out.print("*"); //오른쪽 별 출력
}
System.out.println();
}
}
}
풀이 과정
for (int i = 1; i <= 5; i++) {
변수 i를 1로 초기화하고, i가 5보다 작거나 같을 때까지 1씩 증가하는 첫 번째 for 루프를 시작한다.
for (int j = 1; j < i; j++) {
System.out.print(" ");
}
변수 j를 1로 초기화하고, j가 i보다 작을 때까지 1씩 증가하며 i만큼의 왼쪽 공백을 출력한다. 즉 첫 번째 줄에서는 0개의 공백을 출력하고, 두 번째 줄에서는 1개의 공백을 출력하는 것이다.
for (int j = 1; j <= 4; j++) {
System.out.print("*");
}
변수 j를 1로 초기화하고, j가 4보다 작거나 같을 때까지 1씩 증가하며 4개의 별을 출력한다.
for (int j = 1; j <= 10 - i * 2; j++) {
System.out.print(" ");
}
변수 j를 1로 초기화하고, j가 (10 - i * 2)보다 작거나 같을 때까지 1씩 증가하며 (10 - i x 2)만큼의 가운데 공백을 출력한다. 즉, 첫 번째 줄에서는 8개의 공백을 출력하고, 두 번째 줄에서는 6개의 공백을 출력하는 식이다.
for (int j = 1; j <= 4; j++) {
System.out.print("*");
}
변수 j를 1로 초기화하고, j가 4보다 작거나 같을 때까지 1씩 증가하며 4개의 별을 출력한다.
System.out.println();
바깥 for 루프의 첫 번째 반복이 종료되면 한 줄을 띄어 다음 줄로 이동한다.
for (int i = 1; i <= 5; i++) {
변수 i를 1로 초기화하고, i가 5보다 작거나 같을 때까지 1씩 증가하는 두 번째 for 루프를 시작한다.
for (int j = 1; j <= 5 - i; j++) {
System.out.print(" ");
}
변수 j를 1로 초기화하고, j가 (5 - i)보다 작거나 같을 때까지 1씩 증가하며 (5 - i)만큼의 왼쪽 공백을 출력한다. 즉, 첫 번째 줄에서는 4개의 공백을 출력하고, 두 번째 줄에서는 3개의 공백을 출력하는 것이다.
for (int j = 1; j <= 4; j++) {
System.out.print("*");
}
변수 j를 1로 초기화하고, j가 4보다 작거나 같을 때까지 1씩 증가하며 4개의 별을 출력한다.
for (int j = 1; j < i * 2-1; j++) {
System.out.print(" ");
}
변수 j를 1로 초기화하고, j가 (i x 2 -1 )보다 작을 때까지 1씩 증가하며 (i x 2 - 1)만큼의 가운데 공백을 출력한다.
for (int j = 1; j <= 4; j++) {
System.out.print("*");
}
변수 j를 1로 초기화하고, j가 4보다 작거나 같을 때까지 1씩 증가하며 4개의 별을 출력한다.
System.out.println();
바깥 두번 째 for 루프의 첫 번째 반복이 종료되면 한 줄을 띄어 다음 줄로 이동한다.
공감하며 읽었습니다. 좋은 글 감사드립니다.