本帖最后由 654362860 于 2019-6-26 19:43 编辑
这几天遇到的一个代码案例的填写,挺有意思的,当时我们那个课下题目是给一个数组然后将偶数放在一边奇数放在一边,有两种方法一种是建一个新数组然后将原数组奇偶数各放到一边,另一种是在原数组中进行排序, 新数组奇偶排序: public class ArrayDemo_09 {
public static void main(String[] args) {
int[] array = new int[11];
int[] brr = new int[11];
Random r = new Random();
for (int i=0;i<array.length;i++){
array = r.nextInt(100);
System.out.print(array+",");
}
int left = 0, right = 10;
for (int i=0;i<array.length;i++){
if (array%2==0){
brr[left]=array;
left++;
}else if(array%2==1){
brr[right]=array;
right--;
}
}
System.out.print("\n");
for (int i=0;i<brr.length;i++){
System.out.print(brr+",");
}
}
}
原数组奇偶排序: public class ArrayDemo_10 {
public static void main(String[] args) {
// 定义一个数组其中包含多个数字。
// 用自己的方式最终实现,奇数放在数组的左边,偶数放在数组的右边。
/* int[] array = new int[4]; Random r = new Random();*/int[] array = {10,20,75,31};
for (int i=0;i<array.length;i++){
// array = r.nextInt(100);
System.out.print(array+",");
}
System.out.println(" ");
//编写有错误,需要好好查看
for (int i=0;i<array.length;i++){
if(array%2==0){
for (int j=array.length-1;j>i;j--){
if(j%2==1){
int tem = 0;
tem = array;
array = array[j];
array[j] = tem;
}
}
}
}
for (int i=0;i<array.length;i++){
System.out.print(array+",");
}
}
} 当时在做的时候第一种,因为需要创建新数组操作起来相对容易些,做完第一种就做了第二种,我第二种的思路就是定义一个嵌套循环,外层由前往后,内层由后往前,前位遇到奇数停下进入内层循环从后位找偶数,找到后奇偶数进行交换,然后编译无异常,运行无异常,结果确有问题,我就很纠结,当时还没学会调试,就在那一直看,看不出所以然,第二天辅导老师恰好讲数字大小排序方法,然后我就又做了一下这下竟然没有问题,我比对了两个代码看不出所以然,我叫同桌帮我看了一下,一下看出了问题。 第一个: for (int i=0;i<array.length;i++){
if(array%2==0){
for (int j=array.length-1;j>i;j--){
if(j%2==1){
int tem = 0;
tem = array;
array = array[j];
array[j] = tem;
}
}
}
}
第二个: for (int i=0;i<array.length;i++){
if(array%2==0){
for (int j=array.length-1;j>i;j--){
if(array[j]%2==1){
int tem = 0;
tem = array;
array = array[j];
array[j] = tem;
}
}
}
} 原来区别是内层循环一个用的是下标索引值一个用的是数组元素。 |