首页 > 解决方案 > 在特定模式上编号

问题描述

我想要一个在特定模式上生成数字的代码。例如:

这是我正在尝试的代码:

for(int t=1 ; t<300 ; t=t*10){
    if(t+40 > somenumber && t-40 < sumnumber){
        System.out.println("match  "+t);
        break;
    }
}

标签: javaalgorithmfor-loop

解决方案


您需要使用int division:86/40 = 2因为它只保留int part(86/40.0 would give 2.15

如果step是 a double,您将需要res = step * Math.floor(t / step)

int step = 40;
for (int t = 1; t < 300; t += 10) {
   int res = step * (t / step);
   System.out.printf("%3d => %3d%n", t, res);
}
/*
  1 =>   0
 11 =>   0
 21 =>   0
 31 =>   0
 41 =>  40
 51 =>  40
 61 =>  40
 71 =>  40
 81 =>  80
 91 =>  80
101 =>  80
111 =>  80
121 => 120
131 => 120
141 => 120
151 => 120
161 => 160
171 => 160
181 => 160
191 => 160
201 => 200
211 => 200
221 => 200
231 => 200
241 => 240
251 => 240
261 => 240
271 => 240
281 => 280
291 => 280

推荐阅读