请问为什么我这个全局变量的值不会变呢?
我在做剑指offer:顺时针打印矩阵,其实不用管我的实现思路,只是不知道为什么定义了一个全局变量start,在printMatrix函数中调用printMatrixInCirckle函数,然后返回printMatrix函数,在
printMatrixInCirckle中start加一等于1 了,但返回
printMatrix函数时,start依然等于0,是为什么呢?
import java.util.ArrayList;
public class Solution {
int start=0;
public ArrayList<Integer> printMatrix(int [][] matrix) {
int columns=matrix.length;
int rows=matrix[0].length;
ArrayList<Integer> arrayList=new ArrayList<Integer>();
if(matrix==null)
return null;
if(rows==1){
for (int i = 0; i < matrix.length; i++) {
arrayList.add(matrix[i][0]);
System.out.println(matrix[i][0]);
}
}else{
while(columns>start*2&&rows>start*2){
System.out.println("主函数start="+start);//不管循环多少次这里的start都是输出为0,为什么呢????
printMatrixInCirckle( matrix,columns,rows,start,arrayList);
}
}
return arrayList;
}
private void printMatrixInCirckle(int [][] matrix,int columns,int rows,
int start,ArrayList<Integer> arrayList) {
int b=start;
for(;start==b;start++){//循环一次对start+1,且循环体里没有对start进行操作
int i=start,j=start;//i对应column j对应rows
for(;j<=rows-start-1;j++){//(start,start)i为其列数,j为其行数
arrayList.add(matrix[i][j]);
System.out.println(matrix[i][j]);
}
j--;
if(j>start){
for(i=start+1;i<=columns-start-1;i++){
arrayList.add(matrix[i][j]);
System.out.println(matrix[i][j]);
}
}
i--;
if(i>start&&j>start){
for(j--;j>=start;j--){
arrayList.add(matrix[i][j]);
System.out.println(matrix[i][j]);
}
}
j++;
if(j==start&&i>start){
for(i--;i>start;i--){
arrayList.add(matrix[i][j]);
System.out.println(matrix[i][j]);
}
}
}
System.out.println("子函数start="+start);//输出为1,但是printMatrix函数时,start依然等于0 }
}
求助各路大神了