
请大神看看这两种代码怎么执行结果不一样
代码的功能就是列出哪两个数相加等于100.这是第一种代码:importjava.util.*;publicclasslhb{publicstaticvoidmain(St...
代码的功能就是列出哪两个数相加等于100.
这是第一种代码:
import java.util.*;public class lhb{ public static void main(String[] args) { Scanner we = new Scanner(System.in); System.out.println("请输入一个整数:"); int number = we.nextInt(); int i,j; for(i = 0,j = number; i <= j;i++,j--) { System.out.println(i + "+" + j + "=" + "=" + (i+j));
}
}
}
执行结果如下:
为什么只能输入一半 如果将上述代码里for循环中的i<=j改成i<=number就出现如下正确的结果:
请问为什么i<=j就只能输出一半呢? 展开
这是第一种代码:
import java.util.*;public class lhb{ public static void main(String[] args) { Scanner we = new Scanner(System.in); System.out.println("请输入一个整数:"); int number = we.nextInt(); int i,j; for(i = 0,j = number; i <= j;i++,j--) { System.out.println(i + "+" + j + "=" + "=" + (i+j));
}
}
}
执行结果如下:
为什么只能输入一半 如果将上述代码里for循环中的i<=j改成i<=number就出现如下正确的结果:
请问为什么i<=j就只能输出一半呢? 展开
1个回答
展开全部
i<=j和i<=number
两个结果必然不一样,注意后面的循环结构第三项:i++,j-- 也就是说,每次循环j减少了1,而number是不变的,假设初始i=0,number=100,那么第二种情况循环100次,而
在第一种情况下:
第二次循环是1<99
第三次循环是2<98
...
第50次循环49<50
这样就是50次循环,第51次50<49条件不成立,退出。比第二种情况正好少了一半。
两个结果必然不一样,注意后面的循环结构第三项:i++,j-- 也就是说,每次循环j减少了1,而number是不变的,假设初始i=0,number=100,那么第二种情况循环100次,而
在第一种情况下:
第二次循环是1<99
第三次循环是2<98
...
第50次循环49<50
这样就是50次循环,第51次50<49条件不成立,退出。比第二种情况正好少了一半。
追问
可是我把number的值赋给了j
追答
for(i = 0,j = number; i <= j;i++,j--)
你是说这里赋值j=number吗?
for语句的基础没有掌握好。for语句圆括号里面分为三个部分,用两个分号;隔开。
第一部分:i = 0,j = number //这个部分只执行一次,也就是进入for的初始化
第二部分: i <= j //这个部分是逻辑判断部分,假设for执行100次,那么每次都先进行判断,符合逻辑的就执行for里面的语句,否则跳出
第三部分:i++,j-- 这个叫step部分,就是每次for语句循环执行一次的语句。
你说number的值赋给了j,两个变量不是一直相等的,for语句每次循环之后,两个变量就不一样了,因为有step部分。

2023-07-25 广告
不同公司提供的服务不一样,价格也都不一样。如果想了解更多详细信息,可以咨询下北京磐安公司。北京磐安公司是一家专业从事高新软件的技术公司,公司致力于向企业客户提供一站式企业级软件采购、企业信息化基础架构、信息安全、数字化设计和信息技术教育培训...
点击进入详情页
本回答由云创提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询