研修でよく出てきそうな●とか■で図形描画10連発（Java）

## （共通部分）

```java

package test;					
					
import java.util.LinkedList;					
import java.util.List;					
import java.util.Scanner;					
					
public class Main {									
	public static void main(String[] args) {				
		Scanner scan = new Scanner(System.in);			
		int num2 = scan.nextInt();			
		String square = "■";			

		// コード

	}
}
```

**スクショは、全て入力値が9の場合です。**

## パターン1

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180727/0e965464-88d0-fb89-20fd-175f09e05ef8.png)

```java
// 1から開始して、入力された数になるまでインクリメントする				
// ※lineは現在の行数であると同時に、■の描画数を表す				
for(int line = 1; line <= num2; line++ ){				
	// 1から開始して、この行の描画数以下の間は繰り返す			
	for(int idxOfMarks = 1; idxOfMarks <= line; idxOfMarks++){			
		System.out.print(square);		
	}			
	// 次の行に行くために改行する			
	System.out.println("");			
}				
```

簡潔に書くなら以下。

```java
StringBuilder sb = new StringBuilder();				
for (int line = 0; line < num2; line++) {				
    System.out.println(sb.append(square));				
}				
```


## パターン2

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180727/d077de33-958e-f4ee-fea0-885bbdd910b4.png)

```java
// 入力された数値から開始して、その数が1になるまでデクリメントする				
// ※idxは現在の行数であると同時に、■の描画数を表す				
for(int line = num2; line >= 1 ; line--){				
	for(int idxOfMarks = line; idxOfMarks >= 1; idxOfMarks--){			
		System.out.print(square);		
	}			
	System.out.println("");			
}				
```


## パターン3

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180727/89903556-caf4-bd2a-3251-c7550fb5d2d4.png)

```java
String batsu = "×";				
for(int line = 1; line <= num2; line++ ){				
	// 1から開始して、この行の描画数以下の間は繰り返す			
	for(int idxOfMarks = 1; idxOfMarks <= line; idxOfMarks++){			
		if(idxOfMarks % 2 !=0){		
			System.out.print(square);	
		}else{		
			System.out.print(batsu);	
		}		
	}			
	System.out.println("");			
}	
```

## パターン4

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180727/b85d4502-ef03-43f7-6e98-72bedfbed837.png)

```java
for(int line = 1; line <= num2; line++){				
	for(int idxOfMarks = 1; idxOfMarks <= line; idxOfMarks++){			
		// 行が奇数である場合		
		if(line % 2 != 0){		
			// 奇数個目の印になる場合	
			if(idxOfMarks % 2 != 0){	
				System.out.print(square);
			// 偶数個目の印になる場合	
			}else{	
				System.out.print(batsu);
			}	
		// 行が偶数である場合		
		}else{		
			// 奇数個目の印になる場合	
			if(idxOfMarks % 2 == 0){	
				System.out.print(square);
			// 偶数個目の印になる場合	
			}else{	
				System.out.print(batsu);
			}	
		}		
	}			
	System.out.println("");			
}				
```

## パターン5

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180727/d02880b9-a7a2-3482-9dc0-c2f249458166.png)

```java
for(int line = num2; line >=1; line--){				
	// 空白表示数は、入力数-現在の行で求める			
	int empty = num2 - line;			
	// まず空白分を出力する			
	for(int n=1 ;n <=empty; n++){			
		System.out.print("　");		
	}			
	// その後、印を出力する			
	for(int idxOfMarks = line; idxOfMarks >= 1 ; idxOfMarks--){			
		System.out.print(square);		
	}			
	System.out.println("");			
}				
```


## パターン6

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180727/c044ef9b-8001-2489-d198-f8ada68a06bb.png)

```java
for(int line = 1 ; line<= num2 ; line++){				
	System.out.print(square);			
}				
System.out.println("");				
				
int emptyLines = num2 - 2;				
for(int line2 = 1; line2 <= emptyLines; line2++){				
	for (int index2 = 1 ; index2 <= num2; index2++){			
		if(index2 == 1 || index2 == num2){		
			System.out.print(square);	
		}else{		
			System.out.print("　");	
		}		
	}			
	System.out.println("");			
}				
for(int line = 1 ; line<= num2 ; line++){				
	System.out.print(square);			
}				
```

## パターン7

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180727/d77b9e65-e12d-ec80-58f6-5c5946e152bb.png)

```java
for(int idx = 1; idx <= num2; idx++){				
	for(int i = 1; i <= num2-idx; i++){			
		System.out.print("　");		
	}			
				
	for(int idxOfMarks = 1; idxOfMarks <= idx*2-1; idxOfMarks++){			
		System.out.print(square);		
	}			
				
	for(int i = 1; i <= num2-idx; i++){			
		System.out.print("　");		
	}			
	System.out.println();			
}				
```


## パターン8

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180727/21683136-8d69-d7a6-181d-3609fad7878e.png)

```java
StringBuilder sb3 = new StringBuilder();				
for (int line = 0; line < num2; line++) {				
    System.out.println(sb3.append(square));				
}				
for (int line = 0; line < num2; ++line){				
    System.out.println(sb3.deleteCharAt(0));				
}				
```

## パターン9

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180727/4b8e00a6-2e23-b122-e32d-971a51a97510.png)

```java
    for(int line = 1 ; line <= num2; line++){					
    	for(int idxOfNum=1; idxOfNum<=line; idxOfNum++){				
    		if(line == 1 || line == 2 || line == num2){			
    			System.out.print("●");		
    		}else{			
    			if(idxOfNum == 1 || idxOfNum == line){		
    				System.out.print("●");	
    			}else{		
    				System.out.print("○");	
    			}		
    		}			
    	}				
    	System.out.println();				
    }	
```

## パターン10

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180727/4a4365be-cbbb-a96e-030e-b4d173d573ea.png)


```java
    // 行が1増えると、左の●の位置が+1、右の●の位置が-1となる。					
    int idxOfBlack1 = 1;					
    int idxOfBlack2 = num2;					
    for(int line = 1 ; line <= num2; line++){					
    	for(int idxOfNum = 1; idxOfNum<=num2; idxOfNum++){				
    		if(idxOfNum == idxOfBlack1 | idxOfNum == idxOfBlack2){			
    			System.out.print("●");		
    		}else{			
    			System.out.print("○");		
    		}			
    	}				
    	idxOfBlack1++;				
    	idxOfBlack2--;				
    	System.out.println();				
    }					
```				

（きれいな書き方がありましたらご教授頂けると幸いです。）