鱼C论坛

 找回密码
 立即注册
查看: 3969|回复: 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

  1. package excel;

  2. import org.apache.thrift.TException;

  3. import java.io.IOException;
  4. import java.util.Arrays;
  5. import java.util.Random;

  6. public class Test {
  7.     public static void main(String[] args) throws TException, IOException {
  8.         int[] a = new int[8];
  9.         int[] b = new int[8];
  10.         for (int i = 0; i < a.length; i++) {
  11.             for (int j = 0; j < a.length - 1; j++) {
  12.                 a[j] = new Random().nextInt(100);
  13.                 if (a[j] == a[j + 1]) {
  14.                     a[j] = new Random().nextInt(100);
  15.                 }
  16.             }
  17.             Arrays.sort(a);
  18.         }

  19.         for (int j = 0; j < b.length; j++) {
  20.             for (int i = 0; i < b.length - 1; i++) {
  21.                 b[i] = new Random().nextInt(100);
  22.                 if (b[i] == b[i + 1]) {
  23.                     b[i] = new Random().nextInt(100);
  24.                 }
  25.             }
  26.             Arrays.sort(b);
  27.         }

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

  32.         for (int i = 0; i < b.length; i++) {
  33.             System.out.print(b[i] + " ");
  34.         }
  35.         System.out.println();
  36.         System.out.println(Arrays.equals(a, b));
  37.         System.out.println(a == b);
  38.     }
  39. }
复制代码

过程

过程
结果.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

  1. package excel;

  2. import org.apache.thrift.TException;

  3. import java.io.IOException;
  4. import java.util.Arrays;
  5. import java.util.Random;

  6. public class Test {
  7.     public static void main(String[] args) throws TException, IOException {
  8.         int[] a = new int[8];
  9.         int[] b = new int[8];
  10.         for (int i = 0; i < a.length; i++) {
  11.             for (int j = 0; j < a.length - 1; j++) {
  12.                 a[j] = new Random().nextInt(100);
  13.                 if (a[j] == a[j + 1]) {
  14.                     a[j] = new Random().nextInt(100);
  15.                 }
  16.             }
  17.             Arrays.sort(a);
  18.         }

  19.         for (int j = 0; j < b.length; j++) {
  20.             for (int i = 0; i < b.length - 1; i++) {
  21.                 b[i] = new Random().nextInt(100);
  22.                 if (b[i] == b[i + 1]) {
  23.                     b[i] = new Random().nextInt(100);
  24.                 }
  25.             }
  26.             Arrays.sort(b);
  27.         }

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

  32.         for (int i = 0; i < b.length; i++) {
  33.             System.out.print(b[i] + " ");
  34.         }
  35.         System.out.println();
  36.         System.out.println(Arrays.equals(a, b));
  37.         System.out.println(a == b);
  38.     }
  39. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> 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-5-31 00:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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