著名黑客学习网站的一道黑客入门的的java试题,看似简单,但是苦想无果,有没大佬知道

shadow_zed 2018-05-21 09:27:21
public static int bucketFromRandom(int randomNumber) {

int a[] = new int[10];

for (int i = 0; i < a.length; i++)

a[i] = i * randomNumber;
int index=Math.abs(randomNumber) % a.length;

return a[index];

}

当randomNumber传入的int类型的值为多少时 程序报错,答案只有一个数字
...全文
817 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
逆风的猫 2019-08-04
  • 打赏
  • 举报
回复
8会错,是int类型八进制数和进制数有关
  • 打赏
  • 举报
回复
yjsl__ 2018-05-22
  • 打赏
  • 举报
回复
Integer.MIN_VALUE
竹子_bamboo 2018-05-22
  • 打赏
  • 举报
回复
我试验了一下,因为for下面没有括号,所有是for循环执行完了之后在进行下面的index操作 这里相当是 int index = Math.abs(randomNumber) % 10; return a[index]; 那么index的长度为10,即index是从0到9,超出范围就报错,角标越界 我自己试验了一下,真没测试出来什么值余10不在0到9之间 只知道考点在这里
youyiyang 2018-05-22
  • 打赏
  • 举报
回复
我看了下,只有当i=0的时候,程序是对的,其他i=1---9的时候,都有可能报错。 首先你的randomNumber这个随机数的取值范围是多少?0-100? 0-10?10-20?。。。 当i=1的时候,int index=Math.abs(randomNumber) % a.length; index可以是0-9的任何数, 那么现在只有a[0]=0,a[index]其他都没有初始化,都会报编译报错。
shadow_zed 2018-05-22
  • 打赏
  • 举报
回复
引用 1 楼 youyiyang 的回复:
我看了下,只有当i=0的时候,程序是对的,其他i=1---9的时候,都有可能报错。 首先你的randomNumber这个随机数的取值范围是多少?0-100? 0-10?10-20?。。。 当i=1的时候,int index=Math.abs(randomNumber) % a.length; index可以是0-9的任何数, 那么现在只有a[0]=0,a[index]其他都没有初始化,都会报编译报错。
randomNumber的范围就是int类型的取值范围啊,没初始化默认为0,并不报错.正解为Integer.MIN_VALUE,理由下面的童鞋已经说明了我就不说了
卖水果的net 2018-05-22
  • 打赏
  • 举报
回复
数太大了不好看,不如用 8 位来表示吧 -128 ~ 127 。
shadow_zed 2018-05-22
  • 打赏
  • 举报
回复
引用 3 楼 yjsl__ 的回复:
Integer.MIN_VALUE
,虽然我已经知道了,但是你是第一个答对的,分给你了
竹子_bamboo 2018-05-22
  • 打赏
  • 举报
回复
引用 4 楼 mymy1026 的回复:

受教受教了

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧