設(shè)計(jì)一個(gè)JAVA程序,打印N階螺旋矩陣
一個(gè)JAVA題目
設(shè)計(jì)一個(gè)JAVA程序,打印N階螺旋矩陣:當(dāng)N=3時(shí),則
1 2 3
8 9 4
7 6 5
1 2 3
8 9 4
7 6 5
1
public class Ring
2
{
3
public static int getNum(int n,int i,int j)
4
{
5
if(i==0) return j+1;
6
else if(i==n-1)
7
return 3*n-j-2;
8
else if(j==0)
9
return 4*n-i-3;
10
else if(j==n-1)
11
return n+i;
12
else
13
return 4*(n-1)+getNum(n-2,i-1,j-1);
14
}
15
public static void print(int n)
16
{
17
for(int i=0;i<n;i++)
18
{
19
for(int j=0;j<n;j++)
20
System.out.printf("%7d",getNum(n,i,j));
21
System.out.println();
22
}
23
}
24
public static void main(String[] args)
25
{
26
Scanner scan =new Scanner(System.in);
27
while(true)
28
{
29
System.out.println("input a integer(0 to exit):");
30
int n =scan.nextInt();
31
if(n<=0) break;
32
print(n);
33
}
34
}
35
}

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

1 import java.io.*;
2
3 public class RingDemo{
4
5 public void setArray(int n){
6
7 System.out.println("這是"+n+"個(gè)螺線型數(shù)組:");
8
9 int intA=1;//初始化
10 int[][] array=new int[n][n];
11
12 int intB;
13
14 if(n%2!=0){
15 intB = n/2+1;//奇數(shù)時(shí)i循環(huán)次數(shù)
16 }
17 else
18 intB = n/2;//偶數(shù)時(shí)i循環(huán)次數(shù)
19
20 for(int i = 0;i < intB; i++){//從外到里循環(huán)
21 //從左到右橫的開(kāi)始
22 for(int j=i;j < n-i; j++){
23 array[i][j] = intA;
24 intA++;
25 }
26 //從上到下縱
27 for(int k=i+1;k < n-i; k++){
28 array[k][n-i-1] = intA;
29 intA++;
30 }
31 //從右到左橫
32 for(int l=n-i-2;l >= i ;l--){
33 array[n-i-1][l] = intA;
34 intA++;
35 }
36 //從下到上縱
37 for(int m=n-i-2; m > i ; m--){
38 array[m][i]=intA;
39 intA++;
40 }
41 }
42 //輸出數(shù)組
43 for(int i = 0; i < n; i++){
44 for(int j = 0; j < n; j++){
45 System.out.print(array[i][j] + " ");
46 }
47 System.out.println();
48 }
49 }
50
51 public static void main(String[] args){
52 String strIn = "";
53 System.out.print("please enter a number:");
54 InputStreamReader input = new InputStreamReader(System.in);
55 BufferedReader buff=new BufferedReader(input);
56 try{
57 strIn=buff.readLine();
58 }
59 catch(IOException e){
60 System.out.println(e.toString());
61 }
62
63 int int1 = Integer.parseInt(strIn);
64 RingDemo ring = new RingDemo();
65 ring.setArray(int1);
66 }
67 }
2
3 public class RingDemo{
4
5 public void setArray(int n){
6
7 System.out.println("這是"+n+"個(gè)螺線型數(shù)組:");
8
9 int intA=1;//初始化
10 int[][] array=new int[n][n];
11
12 int intB;
13
14 if(n%2!=0){
15 intB = n/2+1;//奇數(shù)時(shí)i循環(huán)次數(shù)
16 }
17 else
18 intB = n/2;//偶數(shù)時(shí)i循環(huán)次數(shù)
19
20 for(int i = 0;i < intB; i++){//從外到里循環(huán)
21 //從左到右橫的開(kāi)始
22 for(int j=i;j < n-i; j++){
23 array[i][j] = intA;
24 intA++;
25 }
26 //從上到下縱
27 for(int k=i+1;k < n-i; k++){
28 array[k][n-i-1] = intA;
29 intA++;
30 }
31 //從右到左橫
32 for(int l=n-i-2;l >= i ;l--){
33 array[n-i-1][l] = intA;
34 intA++;
35 }
36 //從下到上縱
37 for(int m=n-i-2; m > i ; m--){
38 array[m][i]=intA;
39 intA++;
40 }
41 }
42 //輸出數(shù)組
43 for(int i = 0; i < n; i++){
44 for(int j = 0; j < n; j++){
45 System.out.print(array[i][j] + " ");
46 }
47 System.out.println();
48 }
49 }
50
51 public static void main(String[] args){
52 String strIn = "";
53 System.out.print("please enter a number:");
54 InputStreamReader input = new InputStreamReader(System.in);
55 BufferedReader buff=new BufferedReader(input);
56 try{
57 strIn=buff.readLine();
58 }
59 catch(IOException e){
60 System.out.println(e.toString());
61 }
62
63 int int1 = Integer.parseInt(strIn);
64 RingDemo ring = new RingDemo();
65 ring.setArray(int1);
66 }
67 }
芳兒寶貝.我愛(ài)你

posted on 2007-12-04 23:42 wǒ愛(ài)伱--咾婆 閱讀(3461) 評(píng)論(1) 編輯 收藏 所屬分類: JavaQuestionNeedToSolve