package jongkyu.array11;
import java.util.Random;
import java.util.Scanner;
public class array11 {
Scanner sc = new Scanner(System.in);
Random r = new Random();
public void array12() {
System.out.print("숫자를 입력하세요");//숫자입력하라는걸 띄운다.
int size = sc.nextInt();//숫자를 입력받는다.
int size1=size;//입력한값을 난 몇개 더만들려고 정수형 변수를 추가했다.
int size2=size;//입력한값을 난 몇개 더만들려고 정수형 변수를 추가했다.
int size3=size;//입력한값을 난 몇개 더만들려고 정수형 변수를 추가했다.
int size4=size;//입력한값을 난 몇개 더만들려고 정수형 변수를 추가했다.
int [][] num = new int[size][size];//입력한 값만큼 배열을 만든다.
int k=1;//증가용
int sero=0;//세로값
int garo=-1;//가로값
int direction=1;//방향전환용
while(0<=size) {//첫번째 while문이 시작하는 문
for(int i=0; i<size; i++) {//사이즈만큼 증가한다.
garo+=direction;//가로로 가는걸 더한다.
num[sero][garo]=k;//가로의 값이변경된다.
k++;//넣고자 하는 값증가
/*
* y=-1+1=0
* num[0][0]=1;
* k++;
*
* y=1;
* num[0][1]=2;
* k++;
*
* ......
*
* y=2;
* num[0][2]=3;
*/
}
size--;//처음에 5개였다면 그다음에 4개, 4개 이런식으로 가므로 줄여준다.
for(int i=0; i<size; i++) { //사이즈입력한거에서 하나 준만큼 반복한다.
sero+=direction;//세로로 가는걸 의미한다.
num[sero][garo]=k;//세로값이 증가하는 이유는 일일이 더하기 때문이다.
k++;//넣고자 하는 값증가
/*
* size=2
*
* x=1;
* num[1][2]=
*/
}
direction=direction*-1;//방향전환
//direction의값이 음수일때는 밑에서 위로 올라가는 방향을 표현하고
//양수일때는 위에서 밑으로 내려오는 세로방향에 대한 표현이 간다.
}//첫번째 while문이 끝나는문
//System.out.println("=========================1번째 끝===================");
int [][] num1 = new int[size1][size1];
k=1;//1부터시작해서 증가용으로 썼다.
garo=0;//가로값을 의미한다.
sero=-1;//세로값을 의미한다.
direction=1;//방향을 의미한다.
while(0<=size1) {//2번째 while문이 시작하는 문
for(int i=0; i<size1; i++) {//사이즈만큼 반복해라
sero+=direction;//처음 시작이 세로부터 갈것이므로 세로부터 시작한다.
num1[sero][garo]=k;//세로값이 바뀌면서 k값이 증가되면서 들어간다.
k++;//넣고자 하는 값증가
}
size1--;//줄이는 이유는 처음엔 한줄을 채우지만 그다음엔 하나가 빠지기 때문이다.
for(int i=0; i<size1; i++) { //i에서 사이즈만큼 반복한다.
garo+=direction;//가로방향으로 값이 증가되므로 가로로 해주었다.
num1[sero][garo]=k;//k의값은 어차피 계속 증가가되어야하고 가로값만 바뀌어주면 된다.
k++;//넣고자 하는 값증가
}
direction*=-1;//방향전환
//d의값이 음수일때는 밑에서 위로 올라가는 방향을 표현하고
//양수일때는 위에서 밑으로 내려오는 세로방향에 대한 표현이 간다.
}//2번째 while문이 끝나는 문
//System.out.println("=========================2번째 끝===================");
int [][]num2 = new int[size2][size2];
k=1; //증가되는 값이다.
garo=size2;//가로의 값을 입력받았다.
sero=0;//세로의 값을 입력받았다.
direction=-1;//방향의값을 입력받았다.
while(size2>0) {//3번째 while문이 시작하는 문
for(int i=0; i<size2; i++) {//입력한 크기만큼 반복해라
garo+=direction;//처음에 가로부터 값이 증가되므로 가로를 썼다.
num2[sero][garo]=k;//세로의값은 가만히 있고 가로의 값이 증가할 것이다.
k++;//넣고자 하는 값증가
}
direction*=-1;//처음에 오른쪽에서 왼쪽으로 이동하므로 이렇게 해주었다.
size2--;//처음엔 다 채우고 그다음엔 하나가 빠지므로 마이너스를 해주었다.
for(int i=0; i<size2; i++) {//아까 size2에서 1뺀값으로 시작한다.
sero+=direction;//세로로 값이 증가되므로 세로의 방향을 써주었다.
num2[sero][garo]=k;//세로의 값만 변경될 것이다.
k++;//넣고자 하는 값증가
}
}//3번째 while문이 끝나는 문
//System.out.println("=========================3번째 끝===================");
k=1; //값이 부터시작해서 증가될 것이다.
sero=size3;//세로의 사이즈를 의미한다.
garo=0;//가로의 크기를 의미한다.
direction=-1;//처음에 위로가므로 값이 감소되서 -1을 썼다.
int [][] num3 = new int[size3][size3];//입력한 배열의 크기만큼 배열을 만들었다.
while(size3>0) {//4번째 while문 시작
for(int i=0; i<size3; i++) {//size3만큼 반복한다.
sero+=direction;//sero로 점점 값이 올라가고 -1이므로 위로올라간다.
num3[sero][garo]=k;//세로의 값이 계속 변하게 된다.
k++;//넣고자 하는 값증가
}
direction*=-1;//이제 -1을 곱했으니 배열값이아닌 배열의 크기가 증가할것이다.
size3--;//값을 빼주었다.
for(int i=0; i<size3; i++) {//아까 1뺀 사이즈만큼 반복한다.
garo+=direction;//가로로 방향이 간다.
num3[sero][garo]=k;//가로의 값이 변경된다.
k++;//숫자는 계속 증가한다.
}
}//4번째 while문이 끝나는 문
//System.out.println("=========================4번째 끝===================");
System.out.println("=================================================================");
System.out.println("1번째");
System.out.println("==================================================================");
for(int i=0; i<num.length; i++) {//출력부분
for(int j=0; j<num[i].length; j++) {
System.out.print(num[i][j]+"\t");
}
System.out.println("");
}
System.out.println("=========================================================================");
System.out.println("2번째");
for(int i=0; i<num1.length; i++) {//출력부분
for(int j=0; j<num1[i].length; j++) {
System.out.print(num1[i][j]+"\t");
}
System.out.println("");
}
System.out.println("==================================================");
System.out.println("3번째");
for(int i=0; i<num2.length; i++) {//출력부분
for(int j=0; j<num2[i].length; j++) {
System.out.print(num2[i][j]+"\t");
}
System.out.println("");
}
System.out.println("==========================================");
System.out.println("4번째");
for(int i=0; i<num3.length; i++) {//출력부분
for(int j=0; j<num3[i].length; j++) {
System.out.print(num3[i][j]+"\t");
}
System.out.println("");
}
}
}
'IT일반과목 > java' 카테고리의 다른 글
2차원배열 실습문제 (0) | 2018.07.18 |
---|---|
이중 배열 써서 알파벳 랜덤으로 출력하기(소문자) (0) | 2018.07.18 |
자바 싱글톤(Singleton) (0) | 2018.07.16 |
정적 멤버와 static (0) | 2018.07.16 |
메소드 오버로딩 (0) | 2018.07.16 |