鱼C论坛

 找回密码
 立即注册
查看: 4076|回复: 4

[已解决]关于随机将100以内的数放进int数组中的问题

[复制链接]
发表于 2021-9-8 11:13:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我用同样的方法做了两个随机放100以内的数入int数组中,用"=="和"Array.equals"两种方法进行检查为什么两个数组的元素相同,但是得到的结果均为false,为什么呀?求解。
最佳答案
2021-9-10 11:02:07
我觉得你的代码可能写的有点问题,我按照我理解的思路进行了更正(放在了末尾),希望能帮到你
1. == 比较好理解,数组使用==比较的是内存地址,题中两个数组是前后new出来的,在堆中是不同的内存地址,所以比较结果为false;
2.Arrays.equals(a, b),我们看这个方法的源码
图片1.png
package excel;

import org.apache.thrift.TException;

import java.io.IOException;
import java.util.Arrays;
import java.util.Random;

public class Test {
    public static void main(String[] args) throws TException, IOException {
        int[] a = new int[8];
        int[] b = new int[8];
        for (int i = 0; i < a.length; i++) {
            for (int j = 0; j < a.length - 1; j++) {
                a[j] = new Random().nextInt(100);
                if (a[j] == a[j + 1]) {
                    a[j] = new Random().nextInt(100);
                }
            }
            Arrays.sort(a);
        }

        for (int j = 0; j < b.length; j++) {
            for (int i = 0; i < b.length - 1; i++) {
                b[i] = new Random().nextInt(100);
                if (b[i] == b[i + 1]) {
                    b[i] = new Random().nextInt(100);
                }
            }
            Arrays.sort(b);
        }

        for (int i = 0; i < a.length; i++) {
            System.out.print(a[i] + " ");
        }
        System.out.println();

        for (int i = 0; i < b.length; i++) {
            System.out.print(b[i] + " ");
        }
        System.out.println();
        System.out.println(Arrays.equals(a, b));
        System.out.println(a == b);
    }
}

过程

过程
结果.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-8 18:08:51 | 显示全部楼层
你输出了两遍a数组......
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-9-10 11:02:07 | 显示全部楼层    本楼为最佳答案   
我觉得你的代码可能写的有点问题,我按照我理解的思路进行了更正(放在了末尾),希望能帮到你
1. == 比较好理解,数组使用==比较的是内存地址,题中两个数组是前后new出来的,在堆中是不同的内存地址,所以比较结果为false;
2.Arrays.equals(a, b),我们看这个方法的源码
图片1.png
package excel;

import org.apache.thrift.TException;

import java.io.IOException;
import java.util.Arrays;
import java.util.Random;

public class Test {
    public static void main(String[] args) throws TException, IOException {
        int[] a = new int[8];
        int[] b = new int[8];
        for (int i = 0; i < a.length; i++) {
            for (int j = 0; j < a.length - 1; j++) {
                a[j] = new Random().nextInt(100);
                if (a[j] == a[j + 1]) {
                    a[j] = new Random().nextInt(100);
                }
            }
            Arrays.sort(a);
        }

        for (int j = 0; j < b.length; j++) {
            for (int i = 0; i < b.length - 1; i++) {
                b[i] = new Random().nextInt(100);
                if (b[i] == b[i + 1]) {
                    b[i] = new Random().nextInt(100);
                }
            }
            Arrays.sort(b);
        }

        for (int i = 0; i < a.length; i++) {
            System.out.print(a[i] + " ");
        }
        System.out.println();

        for (int i = 0; i < b.length; i++) {
            System.out.print(b[i] + " ");
        }
        System.out.println();
        System.out.println(Arrays.equals(a, b));
        System.out.println(a == b);
    }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-18 09:22:37 | 显示全部楼层
连帅帅 发表于 2021-9-10 11:02
我觉得你的代码可能写的有点问题,我按照我理解的思路进行了更正(放在了末尾),希望能帮到你
1. == 比较 ...


受教了,感谢解决问题并帮忙完善
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-18 09:24:17 | 显示全部楼层
巴巴鲁 发表于 2021-9-8 18:08
你输出了两遍a数组......

噢,对对,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-7-5 16:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表