如何找到一个数字的范围

时间:2010-12-21 15:53:19

标签: java

我的文件夹名称如下:

"1-500"
"501-1000"
"1001-1500"
"1501-2000"
"2501-3000"
etc....

给定1777之类的ID如何找到它所属的文件夹的名称?

我使用的是Java,但您的答案可能是伪代码。

谢谢!

9 个答案:

答案 0 :(得分:6)

以下是:

// Folder 0: 1-500
// Folder 1: 501-1000
// Folder 2: 1001-1500
// ...

int n = 1777;
int folder = (n-1) / 500;

System.out.printf("%d belongs to folder %d - %d",
                  n, folder * 500 + 1, (folder+1) * 500);

<强>输出:

1777 belongs to folder 1501 - 2000

整数除法将处理获得正确文件夹索引所需的“地板”。 请谨慎包含- 1 。否则,n = 500将以第1组(而不是0)结束。

答案 1 :(得分:3)

    int n = 1777;
    int temp = ((n / 500) * 500) + 1 ;
    if(temp > n && n !=0){
        temp-=500;
    }
    String result = "" + temp + " - "+ (temp + 499);
    System.out.println(result);

答案 2 :(得分:2)

如果你想要一个更通用的方法,那么它(基于https://stackoverflow.com/users/276052/aioobe的解决方案):

public static void main(String[] args) {
    for (int i = 1; i <= 3000; i++) {
        System.out.println(i + "\t" + getRange(i, 1000));
    }
}

private static String getRange(int id, int step) {
    int x = ((id - 1) / step);
    return (x * step + 1) + "-" + ((x + 1) * step);
}

答案 3 :(得分:1)

foreach ( folder in folders )
  [from, to] = split( folder.name, "-" )
  if ( id < from || id > to )
    continue
  // found the right folder.

答案 4 :(得分:1)

“1-500” - &gt;文件夹0
“501-1000” - &gt;文件夹1 “1001-1500” - &gt;文件夹2 ...

使用整数除法获取(1777 - 1)/ 500以获取文件夹编号。

答案 5 :(得分:0)

只需遍历您的文件夹,将名称拆分为“ - ”,解析两个数字并检查您的号码是否在范围内:)

答案 6 :(得分:0)

您可以使用几种情况,在这种情况下,您可以检查它是否在指定值之间,例如:10 < x && x < 20

答案 7 :(得分:0)

如果总是达到五百的范围,你可以这样做:

for(int i = 0; i < Integer.MAX_VALUE; i++){
  if(i*500+1 >= x && (i+1)*500 < x){
    System.out.println("X is between " + (i*500 + 1) + " and " + ((i+1) * 500));
  }
}

变量'x'是id。

如果必须使用文件夹名称,则需要读取文件夹名称,在“ - ”上拆分,然后尝试将它们解析为整数并使用它而不是我的for循环。

答案 8 :(得分:0)

这是你的功能:

 public String folderName(int num)
 {
  StringBuilder sb = new StringBuilder();
  sb.append(1+(num-1)/500).append('-').append((1+((num-1)/500))*500);
  return sb.toString();
 }