大家都答非所问了,其实我的代码并没有问题,能正确的输出螺旋状的图形,只不过是逆时针的而已,如下图: * * * * * * 7 6 5 * * 8 1 4 * * 9 2 3 * * * * * * 我的问题描述的应该挺清楚的吧:“我是按intArray[xScale][yScale] 中第一个下标代xScale表x轴,第二个下标yScale代表y轴来填充数据的,比如n为2时,1在坐标intArray[0][0]的位置,接着是右移坐标并赋值为2(即intArray[0+1][0]=2)”,再换句话问是:“对于int[][] intArray = new int[j]; 这代码中,第一个下标i到底是代表x轴还是y轴,第二个下标j代表x轴还是y轴?” 没人回答,我只能自己研究了,毕老师说的对,画图分析法确实很有助于问题的分析,下面我就画图分析,希望对此不懂的大家也能有帮助: 上面是一个大小3乘3的表格,用代码表示即:int[][] intArray = new [3][3]; ,对于我的问题,我就是想问intArray数组中第1个下标和第2个下标,哪个相当中上图中的X轴,哪个相当于上图中的Y轴?或许大家真的不明白我在说什么吧,打个比方吧: 上图中有红色点的方格的坐标是什么?可以是1 2 ,也可以是 2 1吧! 1、如果是1 2,那么1是第一个下标,而且是Y轴方向的1,如果坐标为1 2,说明第一个下标代表Y轴 2、如果是2 1,那么2是第一个下标,而且是X轴方向的2,如果坐标为2 1,说明第一个下标代表X轴 最后经过代码的测试后我才确定红色方格的坐标是1 2,换成代码也就是说红色位置的方格它代表的元素为:intArray[1][2],也就是说数组中的第1个下标代表的是Y轴,数组中的第二个下标代表的是X轴,到此就可以解释我的代码为什么输出的是逆时针的螺旋状了。 因此在这里给大家纠正一个观点:
以前我们做*号的输出练习时,习惯用变量x来表示行数,用y来表示列数,但这种想法不能用到数组中,因为数组中的y轴是表示行数的,x轴是表示列数的。 从我上面的代表可以看到我是把x、y轴搞反了(intArray[xScale][yScale])这里我把第1个下标当x轴了,把第2个下标当y轴了,所以结果也就反了。希望对大家有帮助!也希望大家以后在回答问题的时候看清楚问题,先回答主要问题,别答非所问。
|