本帖最后由 董霁辉 于 2013-3-12 14:41 编辑
程序片段
static int flag = 1;//为了打印美观,定义标记执行次数
public static void printArr(int[] arr){//定义一个方法,打印数组
if(0!=flag%2)//如果flag为基数打印排序前数组,因为第一次调用打印数组函数时数组未排序,
System.out.print("排序前的数组{");
else
System.out.print("排序后的数组{");//如果flag为偶数打印排序后数组,第二次调用打印数组时,数组已排序
for(int x =0;x<arr.length;x++ ){
if(x!=arr.length-1)//未遍历到最后一个角标
System.out.print(arr[x]+",");
else
System.out.println(arr[x]+"}");
}
flag++;
}
————————————————————————————————
问题:起初我以为flag的值会随着该方法调用次数增加而增加,但我把System.out.println(arr[x]+"}");改为System.out.println(arr[x]+"}"+flag);后,想不通为什么执行N次这个完整的程序后,flag的值始终是 1、2、3;下面是结果
排序前的数组{9,6,3,5,2,1,7,8,4}1
排序后的数组{1,2,3,4,5,6,7,8,9}2
请各位高手指点哈,
PS:虽然我的目的实现了,望您能讲下原理,flag为什么不会大于3呢,感谢
---------------------------------------------------------------------------------------
感谢大家指点,白天上班,客户催的紧,晚上贴出全部代码。
把System.out.println(arr[x]+"}");改为System.out.println(arr[x]+"}"+flag);是想查看下flag的值会不会像我想象的那样,
PS:flag作用:计数器,记录打印数组方法printArr(int[] arr)执行次数,用来控制
if(0!=flag%2)//如果flag为基数打印排序前数组,因为第一次调用打印数组函数时数组未排序,
System.out.print("排序前的数组{");
else
System.out.print("排序后的数组{");//如果flag为偶数打印排序后数组,第二次调用打印数组时,数组已排序
最初想法是对数组进行排序操作时打印文字信息,使输出看着爽点。即,打印一次原数组,然后再打印操作后的数组,因为对一个数组打印动作是成对出现,故 奇数次为原数组,偶数次为操作后的数组。
发帖时的疑问是:第一的感觉是flag会随着整个程序每一次的运行会增加,也是我希望的。但我多次运行后情况是每一次运行程序flag都会从1开始增加。
问题:怎样能实现当本次程序调用完printArr(int[] arr)后flag的值不会被摧毁,当下一次从main开始执行的时候,能够在上一次flag的值基础上继续增加? |