为了账号安全,请及时绑定邮箱和手机立即绑定

打印数字 3 或 6 从 1 到 1000.like 3 ,6,13,16…996,

打印数字 3 或 6 从 1 到 1000.like 3 ,6,13,16…996,

慕森卡 2021-06-06 14:19:34
这是我的代码。当number的值小于100时,输出正确,当number的值为1000时,输出错误import java.util.*;public class Test {    public static void main(String args[]) {        int i,x,y,z,num;        int number=1;        for(;number<1000;number++) {            i=number;               while (i > 0) {                z=i%10; //System.out.println( "digit="+z);                if(((z%3==0)&&(z%9!=0)&&(z!=0))||(z%6==0)&&(z!=0)) //condition for divisiblity by 3 or 6 and not by 9                {                    System.out.println( "number="+number);                      break;                }                i = i / 10;            }        }    }}
查看完整描述

3 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

这要短得多,而且更有意义。


   for(int i = 0; i < 1000; i++){

   String str = Integer.toString(i);


      for(int j = 0; j < str.length(); j++){

          if(str.charAt(j) == '3' || str.charAt(j) == '6')

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

      }

   }


查看完整回答
反对 回复 2021-06-10
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

你的代码工作得很好,唯一缺少的是你的循环直到 999。


此外,在 Java 8 中,您可以简单地执行以下操作:


IntStream.range(1,1001).mapToObj(p->Integer.toString(p)).filter(p->p.contains("3")||p.contains("6")).forEach(System.out::println);

输出:


3

6

13

16

.

.

993

996

- 编辑 -


如果您想要从 3 或 6 开始的所有数字,您可以使用以下之一:


IntStream.range(1,1001).mapToObj(p->Integer.toString(p)).filter(p->p.charAt(0)=='3'||p.charAt(0)=='6').forEach(System.out::println);

输出:


3

6

30

31

32

.

.

.

.

698

699


查看完整回答
反对 回复 2021-06-10
?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

你似乎把事情复杂化了。相反,我会选择:


IntStream.range(1,1000)

         .filter(n -> String.valueOf(n).matches(“3|6”))

         .forEach(n-> System.out.println(“number “ + n));

或命令式方法:


for(int i = 1; i < 1000; i++)

     if(String.valueOf(i).matches(“3|6”))

         System.out.println(“number “+i);


查看完整回答
反对 回复 2021-06-10
  • 3 回答
  • 0 关注
  • 146 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信