您的位置:首页 > 编程语言 > Java开发

Java输出逆时针螺旋数字

2016-09-13 22:27 253 查看

用java逆时针输出螺旋数字

又是上学期学c++时的遗留问题,今天想了一下竟然写了出来。这是代表我的能力有所提升吗?但明显写出的代码还是略不堪入目。

Methods

主要思路就是用两个for循环边界判定来实现逆时针输出。

1. 首先创建n行n列的二维数组,并用两个for循环初始化为0

2. 设定变量count往数组里填数

3. 四个方向的行进,内含边界判定

难点

说是难点其实是难到我的地方,或者说是之前难想到的地方。

比如说是在右行的一段代码中,需要处理之前下行的下标变换:

for(r–, c++; c < n; c++)

这里的r–, c++是在调试中一步一步改的…

Code

还是贴一下完整的代码吧

import java.util.Scanner;

public class Lab2_4 {

public static void main(String[] args) {

int n=0;
System.out.println("请输入n:");
try {
Scanner inputn = new Scanner(System.in);
n = inputn.nextInt();
} catch (Exception e) {
// TODO: handle exception
}

// initialize
int arr[][] = new int

;
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
{
arr[i][j] = 0;
}
}
arr[0][0]  = 1;

int r=0 , c=-1, count=2;

ToShow:
for( ; count <= n*n; ){
// 下行
for(r++, c++; r<n; r++)
{
if(arr[r][c] != 0){
break;
}

arr[r][c] = count;
count++;
if(count >= n*n){
break ToShow;
}
}
//右行
for(r--, c++; c<n; c++)
{
if(arr[r][c] != 0){
break;
}

arr[r][c] = count;
count++;
}
//上行
for(c--, r--; r>=0; r--)
{
if(arr[r][c] != 0){
break;
}

arr[r][c] = count;
count++;
}
//左行
for(c--, r++; c>=0; c--)
{

if(arr[r][c] != 0){
break;
}
arr[r][c] = count;
count++;
}
}

//show
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
{
System.out.print(arr[i][j]+"\t");
}
System.out.println(" ");
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 螺旋数字