请教大神问题,关于continue; 源码 Java 21days 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 数组越界越得离谱了.count++之后判断加之前是否在范围之内,但是count已经加了,还<=长度,=长度就已经越界了,编程中数组从0开始计算是基本常识.程序里面用的count也是加了之后的count,完全错乱了. 我也这么觉得的,所以应该确认是书籍出问题了吧?我想理解的就是count++的赋值范围,一般count++是在先使用再++,那么它的使用范围到底是到哪里停止呢?是说这语句在整个while执行之后回滚++,还是说如果这部分先++了再执行下面的程序呢?比如,int j=count++;那j的值应该还是为0吧? 这本书好像是国外的人写的,我查了下最新的java6原版,也是这个问题,我总觉得应该不至于出现这么低级的错误,而且count++的值确实是使用之后再赋值,原则上只是<=那里似乎有点问题,语句这样写应该是可以的,但是好像即使<=改为<还是溢出,我调试了下,溢出的原因应该在count2上了好像~ 我也这么觉得的,所以应该确认是书籍出问题了吧?我想理解的就是count++的赋值范围,一般count++是在先使用再++,那么它的使用范围到底是到哪里停止呢?是说这语句在整个while执行之后回滚++,还是说如果这部分先++了再执行下面的程序呢?比如,int j=count++;那j的值应该还是为0吧?还有个问题:就是如果 打印值是从1开始的;如果 打印值就从0开始了;确实有点不太理解,大神能不能指导下呀? 这书写的什么破烂啊。。光说array[count++] = XXXwhile (count++ <= array.length)就是不值得提倡的风格,更不适合作为给新手看的范例,光这一点这书就可以扔了。。其次这里明显数组越界错误,还有估计作者把continue和break都弄混了,下面的解释说只要有一个是1,就退出循环,那么应该说的是break,而代码中明明是continue连范例代码中都有严重错误,还多达两三处,这书能看? 烂书List榜首21天XXX第二名 XXX从入门到精通LZ THINKING IN JAVA才是正途啊 首先,这个题是有问题的,从截图部分代码可知:1.目标为根据数组array1,产生数组array2。(特殊结束条件暂不考虑)2.进入循环之前,创建了2个下标属性 count count2分别共2个数组使用。初始指向数组中第一个元素3.进入循环体,第一个下表count在进行比较的同时执行了自增,判断完成该下标已移位。指向第一个数组的第二个元素。此时若进行赋值操作,将等同 array2[0] = array1[1]。数组复制(参杂类型转换,特殊结束均为细节条件),第一要素就是下标对应。下表如果不一致,就算不报错,实现了最终结果也不会是预期结果。 int[] array1 = {2, 5, 6, 8, 2, 1, 3}; float[] array2 = new float[array1.length]; int count = 0; while(count <= array1.length){ if(array1[count] == 1){ break; } array2[count] = (float) array1[count]; count++; } System.out.println(Arrays.toString(array1) + " " + Arrays.toString(array2));[2, 5, 6, 8, 2, 1, 3] [2.0, 5.0, 6.0, 8.0, 2.0, 0.0, 0.0] 我了个擦,lz快把这本书扔了,别被这本书祸害了。给你个修正版的//ps:吐槽下这个变量名,count一般在统计的时候用,用i或者index,idx之类的都直观多了int count=0;int count2=0;//count=array1.length就越界了,数组索引是从0开始的,所以最大索引为array.length-1,示例里的越界都不知道越界到哪里去了while(count<array1.length){if(array[count]==1){break;//这才是终止循环,continue是跳过后面的代码继续执行下次循环}array2[count2]=array1[count];//++操作放在最后是个好习惯count++;count2++;} Java Flash Player 今天开始研究普元 EOS <求助>Xstream的问题--各位牛人帮帮小妹吧! 图片显示的问题 JSP页面传递中文到SERVLET乱码(求高手解决) 从远程机器上直接读/写文件 知道了doc文档的二进制流字符串后,如何还原为一份doc文档? 单机版的桌面程序问题(在线等) 分页分的头大。。。。。 HelloWrold中不用public修饰class程序也能运行,为何? 如何利用多线程实现Socket和SocketServer的通话? java菜鸟求助
count++之后判断加之前是否在范围之内,但是count已经加了,还<=长度,=长度就已经越界了,编程中数组从0开始计算是基本常识.程序里面用的count也是加了之后的count,完全错乱了.
我想理解的就是count++的赋值范围,一般count++是在先使用再++,那么它的使用范围到底是到哪里停止呢?是说这语句在整个while执行之后回滚++,还是说如果这部分先++了再执行下面的程序呢?比如,int j=count++;那j的值应该还是为0吧?
我想理解的就是count++的赋值范围,一般count++是在先使用再++,那么它的使用范围到底是到哪里停止呢?是说这语句在整个while执行之后回滚++,还是说如果这部分先++了再执行下面的程序呢?比如,int j=count++;那j的值应该还是为0吧?
还有个问题:就是如果
打印值是从1开始的;
如果
打印值就从0开始了;确实有点不太理解,大神能不能指导下呀?
光说array[count++] = XXX
while (count++ <= array.length)
就是不值得提倡的风格,更不适合作为给新手看的范例,光这一点这书就可以扔了。。其次这里明显数组越界错误,还有估计作者把continue和break都弄混了,下面的解释说只要有一个是1,就退出循环,那么应该说的是break,而代码中明明是continue连范例代码中都有严重错误,还多达两三处,这书能看?
第二名 XXX从入门到精通
LZ THINKING IN JAVA才是正途啊
1.目标为根据数组array1,产生数组array2。(特殊结束条件暂不考虑)
2.进入循环之前,创建了2个下标属性 count count2分别共2个数组使用。初始指向数组中第一个元素
3.进入循环体,第一个下表count在进行比较的同时执行了自增,判断完成该下标已移位。指向第一个数组的第二个元素。此时若进行赋值操作,将等同 array2[0] = array1[1]。
数组复制(参杂类型转换,特殊结束均为细节条件),第一要素就是下标对应。下表如果不一致,就算不报错,实现了最终结果也不会是预期结果。 int[] array1 = {2, 5, 6, 8, 2, 1, 3};
float[] array2 = new float[array1.length];
int count = 0;
while(count <= array1.length){
if(array1[count] == 1){
break;
}
array2[count] = (float) array1[count];
count++;
}
System.out.println(Arrays.toString(array1) + " " + Arrays.toString(array2));[2, 5, 6, 8, 2, 1, 3] [2.0, 5.0, 6.0, 8.0, 2.0, 0.0, 0.0]
//ps:吐槽下这个变量名,count一般在统计的时候用,用i或者index,idx之类的都直观多了
int count=0;
int count2=0;
//count=array1.length就越界了,数组索引是从0开始的,所以最大索引为array.length-1,示例里的越界都不知道越界到哪里去了
while(count<array1.length){
if(array[count]==1){
break;//这才是终止循环,continue是跳过后面的代码继续执行下次循环
}
array2[count2]=array1[count];
//++操作放在最后是个好习惯
count++;
count2++;
}