老师那里错了

老师那里错了

int ge,shi,bai,n,q,p;
n=200;
do {
   n++;
   bai=n/100;
   shi=n%100/10;
   ge=n%10;
   q=bai+shi+ge;
   p=bai*shi*ge;
   if (p==42&q==12);

}while (n<=300);
System.out.println(n);

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,代码编写的不错,但是还有一点小问题:

1、if语句的编写语法不正确,不应该添加分号;因为分号;表示语句的结束,而在这个题目中,思路应该是判断三个数字的积是否为42,三个数字的和是否为12,如果满足条件则输出该数值,所以应该将输出语句放在if语句的代码体中。

具体修改如下:

http://img1.sycdn.imooc.com//climg/5da81c7d09e37ad604700334.jpg

2、建议将下面的&改成&&,可以提供代码执行效率。

http://img1.sycdn.imooc.com//climg/5da81cb60936069204190155.jpg

综上所述,修改后的代码如下:

public static void main(String[] args) {
		int ge, shi, bai, n, q, p;
		n = 200;
		do {
			n++;
			bai = n / 100;
			shi = n % 100 / 10;
			ge = n % 10;
			q = bai + shi + ge;
			p = bai * shi * ge;
			if (p == 42 && q == 12) {

				System.out.println(n);
			}

		} while (n <= 300);
	}

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • qq_慕斯829143 提问者 #1
    老师&&不是短路吗,这个不是得两个同时成立吗?
    2019-10-17 15:54:04
  • 好帮手慕酷酷 回复 提问者 qq_慕斯829143 #2
    同学你好,&&短路运算符,与操作,当只有满足两边的条件都为true时,整个表达式才为true。如果其中一个判断为false,则整个表达式都为false。&&的短路表现在如果左边的表达是为false,然后将不再执行右边的表达式。例如:p为数值15,则在第一个判断p==42中就是不成立的,也就不再需要判断q==12的表达式,可以提高运行效率。如果p为42,则第一个判断成立,还会继续判断第二个表达式q==12的表达式。 如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
    2019-10-17 16:02:12
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师