【问题标题】:make number on a specific pattern在特定模式上编号
【发布时间】:2023-04-02 00:26:01
【问题描述】:

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

  • 如果数字在 0-39 范围内,则为 0。
  • 如果数字在 40-79 范围内,则为 40。
  • 如果数字在 80-119 范围内,则为 80,依此类推...

这是我正在尝试的代码:

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

【问题讨论】:

  • i = i - (i % 40)
  • 你有一个模糊的要求,这似乎是一个家庭作业问题。家庭作业的目标之一是人们需要自己做,这样他才能理解分配任务的范围。
  • somenumber / 40 * 40
  • for(int t=1 ; t

标签: java algorithm for-loop


【解决方案1】:

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

如果stepdouble,则需要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

【讨论】:

    【解决方案2】:

    看起来您想要知道您的数字中有多少个 int 乘以 40:对于 39,它是 0,对于 40...79,它是 1,等等?就是这样:

    System.out.println(40*(somenumber/40));

    自从 (somenumber/40) 是一个 int 除法,它会为您提供次数,因为您想要下限,只需将其再次乘以 40

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-26
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多