求简洁或更好的写法,谢谢!

求简洁或更好的写法,谢谢!

public class LoopDemo {

    public static void main(String[] args) {

//定义变量ge、shi、bai,用于存放个位、十位、百位上的数字

        int a,s=0,g=0,ge,shi=0,bai;

        int sum,ji;

//使用for循环

       for(a=200;a<300;a++,s++,g++)

        {

//取出百位数

       bai=2;

   //取出十位数

  switch(s){

      case 0:  shi=0;break;

      case 10:shi=1;break;

      case 20: shi=2;break;

      case 30: shi=3;break;

      case 40: shi=4;break;

      case 50: shi=5;break;

      case 60:shi=6;break;

      case 70: shi=7;break;

      case 80: shi=8;break;

      case 90: shi=9;break;

  }  

  

//取出个位数

if(g==10) g=0;

ge=g;

//计算三个数字之积

            ji=bai*shi*ge;

//计算三个数字之和

sum=bai+shi+ge;

            //如果积等于42并且和为12,则将满足条件的数输出

            if(ji==42&&sum==12)

                System.out.println(a);

        }

}

}


正在回答 回答被采纳积分+1

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

15回答
宗政铭雅 2019-01-30 02:25:28

public class LoopDemo {

    public static void main(String[] args) {

        int ge,shi,bai;    //定义变量ge、shi、bai,用于存放个位、十位、百位上的数字

        for (int i=200;i<=300;i++){

            bai=i/100;    //取出百位数

            shi=i/10%10;    //取出十位数

            ge=i%10;    //取出个位数

            int ji=ge*shi*bai;    //计算三个数字之积

            int he=ge+shi+bai;    //计算三个数字之和

            if ((ji==42)&(he==12))    //如果积等于42并且和为12,则将满足条件的数输出

                System.out.println(i);

        }

    }

}


  • 百位i/100%10,&和&&都是逻辑运算符,都是判断两边同时真则为真,否则为假;但是&&当第一个条件不成之后,后面的条件都不执行了,而&则还是继续执行,直到整个条件语句执行完为止。建议使用&&代替&。
    2019-01-30 10:03:18
qq_Ken_cklBKS 2019-01-27 20:59:51

public class LoopDemo {

    public static void main(String[] args) {

//定义变量ge、shi、bai,用于存放个位、十位、百位上的数字

        int ge,shi,bai;

//使用for循环

for(int num=200;num<=300;num++)

        {

//取出百位数

bai=(int)(num/100);

//取出十位数

shi=(int)(num/10-bai*10);

//取出个位数

    ge=num%10;

//计算三个数字之积

            int j=bai*shi*ge;

//计算三个数字之和

int h=bai+shi+ge;

            //如果积等于42并且和为12,则将满足条件的数输出

            if(j==42&&h==12)System.out.println(num);

        }

}

}

楼主看看吧

Soulans 2018-12-29 20:44:40
//先取个位
int ge = number % 10;
//再取十位
int shi = (number-ge) % 10;
//再取百位
int bai = (number-ge-shi) % 10;

这样的写法应该算是比较简单而且易懂的了。

  • Soulans #1
    修改一下,取十位和取百位分别是%100和%1000
    2018-12-29 20:45:31
qq_慕桂英7126707 2018-12-28 11:39:17

这道题主要是要想到怎么取ge shi bai的方法

public class LoopDemo {

    public static void main(String[] args) {

//定义变量ge、shi、bai,用于存放个位、十位、百位上的数字

   

        int ge=0,shi=0,bai=0;

//使用for循环

        for(int i=200;i<=300;i++){

        //取出百位数

    bai=i/100;

//取出十位数

shi=i%100/10;

//取出个位数

ge=i%10;

//计算三个数字之积

            int add=bai*shi*ge;

//计算三个数字之和

int sum=bai+shi+ge;

            //如果积等于42并且和为12,则将满足条件的数输出

if(add==42&&sum==12){

System.out.println(i);

}

        }

        


            

    }

    

}


  • 十位i/10%10,百位i/100%10
    2018-12-28 13:38:08
_岁月如歌_ 2018-12-27 23:27:27

public class LoopDemo {

    public static void main(String[] args) {

//定义变量ge、shi、bai,用于存放个位、十位、百位上的数字

        int ge=0,shi=0,bai=0;

        

    for(int i=200;i<=300;i++){

        

bai=i/100;

shi=(i%100)/10;

ge=(i%100)%10;

      if((bai*shi*ge)==42&&(bai+shi+ge)==12){

            System.out.println(i);

            

        }

        }

}

}


慕尼黑112326 2018-08-29 14:02:41

class LoopDemo{

    public static void main(String[] args){

        int ge=0,shi=0,bai=0;

        for (int i=200;i<=300;i++) {

            bai=i/100;

            shi=(i%100)/10;

            ge=i%10;

            int mul=ge*shi*bai;

            int add=ge+shi+bai;

            if ( mul==42 & add==12) {

                System.out.println(i);  

            }

        } 

    }

}


Allenxcai1729011 2018-08-28 21:13:39

public class LoopDemo {

    public static void main(String[] args) {

//定义变量ge、shi、bai,用于存放个位、十位、百位上的数字

int ge,shi,bai;

        

//使用for循环

for(int i=200;i<=300;i++)

        {

//取出百位数

      bai=i/100;

      

//取出十位数

shi=(i-i/100*100)/10;

//取出个位数

ge=i%10;

//计算三个数字之积

            int a=bai*shi*ge;

//计算三个数字之和

int b =bai+shi+ge;

            //如果积等于42并且和为12,则将满足条件的数输出

            if(a==42&b==12)

            System.out.println(i+" ");

            

 

        }

}

}


Javan峰 2018-08-21 12:34:32
 int ge,shi,bai;
	   
	     for(bai=2;bai<=2;bai++){
	         for(shi=0;shi<=9;shi++){
	             for(ge=0;ge<=9;ge++) {
	             	if(bai*shi*ge==42&bai+shi+ge==12) {
	             		System.out.println(bai+""+shi+""+ge+"  ");
		             		
	             	}
	              }
	          }
	     }
  • 我这样写直接得结果
    2018-08-21 12:35:21
慕仰9137223 2018-03-31 15:11:03

刚才那个错了

int ge,shi,bai,num=200;

for(num=200;num<=300;num++){

ge=num%10;

shi=num/10%10;

bai=num/100%10;

int he=ge+shi+bai;

int ji=ge*shi*bai;

if(he==12&&ji==42) {

System.out.println(num);

}


慕仰9137223 2018-03-31 15:10:10

System.out.println(sum);

int ge,shi,bai,num=200;

for(num=200;num<=300;num++){

ge=num%10;

shi=num/10%10;

bai=num/100%10;

int he=ge+shi+bai;

int ji=ge*shi*bai;

if(he==12&&ji==42) {

System.out.println(num);

}

}


  • int ge,shi,bai,num=200; for(num=200;num<=300;num++){ ge=num%10; shi=num/10%10; bai=num/100%10; int he=ge+shi+bai; int ji=ge*shi*bai; if(he==12&&ji==42) { System.out.println(num); }
    2018-03-31 15:10:39
Mitsushima_Hikari 2018-03-31 12:26:06

		// 定义变量ge、shi、bai,用于存放个位、十位、百位上的数字,以及存放积的sum1,存放和的sum2
		int ge, shi, bai,sum1,sum2;
		// 使用for循环
		for (int num = 200; num <= 300; num++) {
			// 取出百位数
			bai = num / 100;
			// 取出十位数
			shi = (num / 10) % 10;
			// 取出个位数
			ge = num % 10;
			// 计算三个数字之积
			 sum1 = ge * shi * bai;
			// 计算三个数字之和
			 sum2 = ge + shi + bai;
			// 如果积等于42并且和为12,则将满足条件的数输出
			if (sum1 == 42 && sum2 == 12) {
				System.out.println(num);
			}
		}

	


你如星辰 2018-03-27 21:08:16

http://img1.sycdn.imooc.com//climg/5aba423000014fbb04130296.jpg够简洁吧!

XR_Magee 2018-02-05 21:40:54

for(int i=200;i<=300;i++) {

if(((i%10)*((i/10)%10)*((i/100)%10)==42)&&((i%10)+((i/10)%10)+((i/100)%10)==12)) {

System.out.println("i="+i);

}

}

我这一套for循环,也不需要定义个十百位的值,直接输出200到300之间满足条件的数字。

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

提问者 慕仙9711718 2017-11-12 13:54:51

要取哪一位,就把小数点移到那一位后面(整除10*n),然后除以10取余就得到了。

比如12345,要取百位上的3,就把小数点移到3那位后面,就是先整除100, 得到123, 再除以10取余就得到3了;

代码来写就是

int number = 12345;

int ge = number%10;  //个位, 小数点已经在个位后面了就不用再除

int shi = number/10%10;  //十位, 整除10让小数点移到十位上的数字4后面,得到1234,再除以10取余得到

int bai = number/100%10;  //百位,小数点移到百位3之后,除以10取余得到百位

int qian = number/1000%10;

————摘自某位同学的详解!

RicherQ 2017-11-11 15:36:46

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

这样写应该也可以

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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