请教一个关于循环的问题

long5mao 2017-11-22 05:59:43
源代码功能: 取得数组的最大值
=====================================================
public class TestDemo{
public static void main(String args[]){
int data [] = new int [] {6,10,3,8,15,12};
int max = data[0];
for (int x = 0 ; x < data.length ; x ++){
if (max < data[x]){
max = data[x];
}
}
System.out.println(max);
}
}
======================================================
请教关于
for (int x = 0 ; x < data.length ; x ++){
if (max < data[x]){
max = data[x];
}
}
当 x = 0 的时候,0 小于数组的长度,那么就会执行下面的if语句吗?如果是这样的话,那一开始已经把0的位置这个值是6已经赋给max了,那么if语句是不成立的,是false,我的理解有错么?

还是说 x=0 x小于数组的长度,然后先增加1 ,然后再执行 if语句?
...全文
993 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lie_lei 2018-01-06
  • 打赏
  • 举报
回复
楼主:你的第一个理解是正确的,简单来说 x 控制着 for循环,if循环不断比较取出最大值,数组的某个元素比 max大那 max 就是谁,so 第一个值给了 max 又从 data【0】开始比较 肯定是false 所以没有意义,建议从 1 开始循环.
youyouke 2018-01-05
  • 打赏
  • 举报
回复
请教关于 for (int x = 0 ; x < data.length ; x ++){ if (max < data[x]){ max = data[x]; } } 你的第一个分析没有错。for 语句执行顺序为:1、x=0;2、判断条件,成立进入循环体,不成立退出循环;3、x++。 因已有int max = data[0]; 所以循环应改为 for (int x = 1 ; x < data.length ; x ++){ if (max < data[x]){ max = data[x]; } 这样效率能高些。
meluobote 2018-01-03
  • 打赏
  • 举报
回复
楼主不知道从零还是从一开始是因为不知道那个+1是先加还是后加,是后加的。。。。。。。
  • 打赏
  • 举报
回复
楼主的第一个理解是正确的,只是楼主的不用拘泥于这个疑惑点,代码都是按逻辑顺序执行的, 如果你int max = data[0];的话,则for循环可以直接把 x 赋值为1,代表从数组的第二个元素开始比较,因为第一个元素已经赋值出去了 如果你是int max=0的话,则for循环直接把x赋值为0,代表从数组的第一个元素开始进行比较, 这样操作就不会产生你的疑惑点(没有必要的循环了一次) 这个for循环里面的变量x的赋值多少,是要看你上一行代码来处理得
「已注销」 2017-12-30
  • 打赏
  • 举报
回复
int x = 0; while(x<n){ if(){ // } x++; }
Tony__Java 2017-12-12
  • 打赏
  • 举报
回复
for(语句1 ; 语句2 ; 语句4){ 语句3; } 在for循环中的语句执行顺序为:语句1->语句2->语句3->语句4 所以你的第一个理解正确. 但是我们一般比较时,令max = data[0];那么在for循环时,就直接比较max与data[1]的大小并进行接下来的操作.
kevin831143 2017-12-06
  • 打赏
  • 举报
回复
是第一个 循环从x=0开始 满足条件 执行循环体 然后在自加
在发呆的_fy 2017-12-06
  • 打赏
  • 举报
回复
引用 12 楼 weixin_40403523 的回复:
for循环会先判断条件 在执行循环体然后才更新条件 也就是X++
还有就是循环应该从1开始而不是0
在发呆的_fy 2017-12-06
  • 打赏
  • 举报
回复
for循环会先判断条件 在执行循环体然后才更新条件 也就是X++
wzd_10010 2017-12-05
  • 打赏
  • 举报
回复
x的值才是for循环的条件,把max赋值为任何数都与循环不发生任何关系,只有x的值被赋值为6时才会由于6<6不成立而终止循环
wzd_10010 2017-12-05
  • 打赏
  • 举报
回复
先假设data[0]也就是数组第一位就是最大值让他与后面的所有元素进行大小比较,for循环的作用就是让max与data[0]后面的每一个元素进行对比,if的作用就是判断max是不是当前最大值,如果max不是当前最大值就把当前最大值赋值给max也就是执行if大括号内的语句,如果max是最大值那么就不执行if内的语句继续for循环比较下一个元素直到循环结束,最后跳出循环输出max这个最大值
suifeng2580 2017-11-24
  • 打赏
  • 举报
回复
int max = data[0];
for (int x = 0 ; x < data.length ; x ++){
if (max < data[x]){
max = data[x];
}
}

data[0];作为参照物;
(max < data[x])
数组中的每一个元素和参照物进行比较,
max = data[x];
如果if条件成立
就将数组中的最大值赋值给max
天之上有什么 2017-11-23
  • 打赏
  • 举报
回复
从一开始比较就好了呀
Clumsy__Cat 2017-11-23
  • 打赏
  • 举报
回复
x=0时,max和data[0]是相等的,不进入if,x可以直接从1开始进行循环,自己和自己没有比较的必要
隐语者 2017-11-23
  • 打赏
  • 举报
回复
引用 7 楼 翼殇的回复:
当 x = 0 的时候,0 小于数组的长度,那么就会执行下面的if语句吗?如果是这样的话,那一开始已经把0的位置这个值是6已经赋给max了,那么if语句是不成立的,是false,我的理解有错么? 应该没错吧。
对,直接x++,然后进入下次循环
CYYYYYYYYYYYYYYY 2017-11-23
  • 打赏
  • 举报
回复
当 x = 0 的时候,0 小于数组的长度,那么就会执行下面的if语句吗?如果是这样的话,那一开始已经把0的位置这个值是6已经赋给max了,那么if语句是不成立的,是false,我的理解有错么? 应该没错吧。
隐语者 2017-11-22
  • 打赏
  • 举报
回复
for (int x = 0 ; x < data.length ; x ++){
if (max < data[x]){
max = data[x];
}
首先楼主已经for循环里面定义了一个初始变量x,并给他初始化为0,并设定了for循环的范围为x < data.length ,即想x<6;

1. 0<6, 所以执行for循环的方法体,执行完方法体的内容之后,x++
2. 1<6 ,又执行for循环的方法体,执行完方法体的内容之后,又 x++
。。。

直到x=6的时候,发现 6<6 ,不成立,退出for循环,注意:此时x不会在x++,还是6

所以 for循环首先会执行 int x = 0,之后判断 x < data.length,如果成立就执行方法体,执行完之后才 x++ , 执行完一遍,此时x =1 ,在判断 x < data.length,如果成立又执行方法体。。。

楼主的程序没有问题,之后会返回最大值 15.
以下贴图:

  • 打赏
  • 举报
回复
原语句 for (int x = 0 ; x < data.length ; x ++) 分拆执行 int x=0 ,x<data.length, if(.....) { ...... } x++;
pauliuyou 2017-11-22
  • 打赏
  • 举报
回复
x为0时的作用是取数组中第1个元素中的值, 此时和max值一样。 所以不会进入if 所以通常的作法是x从1开始
Squ1rrel 2017-11-22
  • 打赏
  • 举报
回复
你的第一个理解是对哒

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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