2014-09-03 1 views
0

i ont une structure de dossier que j'ai besoin d'ouvrir les dossiers en fonction des dans le nombre donné comme ceci:simplifyfing beaucoup d'ifs pour les numéros dossier plage check

Dossier:

-1000 
--1000 
--1001 
--1002 
--1003.. 
--1250 

-1251 
--1251 
--1252 
--1253 
--1254 
... 
--1500 

-1501 
--1501 
and go on, for each 250 files, create a new folder LastNumber+1 

est là une façon de faire simple je sais le fais par ceci:

int typedNumber = 1501; 

if(typedNumber > 1000 && typedNumber < 1250) { 
OpenFolder(1000) 
} 
if(typedNumber > 1251 && typedNumber < 1500) { 
OpenFolder(1251) 
} 
if(typedNumber > 1501 && typedNumber < 1700) { 
OpenFolder(1501) 
} 

pourquoi, si ne sera pas une façon, cuz j'ai plus de 15000 fichiers, donc 15000/250 = 60 IFS

est-ce possible? comme

someMethodToGetTypedNumberRange(int number) { 
//something do know where folder range the number is in 
} 

obs: le fichier ne peux pas faire .. pour rechercher cuz-il âges

j'apprécie tutoriel ou de toute direction

+2

Regardez dans l'opérateur de module: http://www.dreamincode.net/forums/topic/273783-the-use-of-the-modulo-operator/ –

+0

je willl :), thx – user2582318

+0

Donc tous vos numéros de dossier ont un "1", sauf le premier "1000"? – markspace

Répondre

1

Je pense que la simple division et la multiplication vont ya faire. Ce code:

int typedNumber = 770; 
    int folderNum = typedNumber/250 * 250 + 1; 
    System.out.println(folderNum); 

Imprime "751" pour la valeur d'entrée 770. Est-ce ce que vous vouliez?

EDIT: depuis que vous avez mis à jour votre OP, vérifiez la liste des numéros ci-dessous ainsi que le code, voyez si c'est correct pour ce que vous voulez.

public static int folderNumber(int fileNumber) { 
     int folderNum = (fileNumber-1)/250 * 250; 
     if(folderNum > 1000) folderNum++; 
     if(folderNum < 1000) folderNum = 1000; 
     return folderNum; 
    } 

    public static void main(String[] args) 
    { 
     for(int i = 1000; i < 3000; i += 250) { 
     System.out.println((i-1) + " -> " + folderNumber(i-1)); 
     System.out.println(i + " -> " + folderNumber(i)); 
     System.out.println((i+1) + " -> " + folderNumber(i+1)); 

     } 
    } 

produit une sortie:

999 -> 1000 
1000 -> 1000 
1001 -> 1000 
1249 -> 1000 
1250 -> 1000 
1251 -> 1251 
1499 -> 1251 
1500 -> 1251 
1501 -> 1501 
1749 -> 1501 
1750 -> 1501 
1751 -> 1751 
1999 -> 1751 
2000 -> 1751 
2001 -> 2001 
2249 -> 2001 
2250 -> 2001 
2251 -> 2251 
2499 -> 2251 
2500 -> 2251 
2501 -> 2501 
2749 -> 2501 
2750 -> 2501 
2751 -> 2751 
BUILD SUCCESSFUL (total time: 1 second) 
+0

oui, presque, mais essayez ceci en utilisant le numéro 1000, 2000, 3000, le bon dossier pour le numéro 1000, est dans le dossier 1000 et non 1001 !! le code est presque parfaitement je ne sais pas quel changement je dois faire ... ou je dois le menacer en utilisant ifs? si c'est un nombre entier (1200,100, 200) merci – user2582318

+0

S'il vous plaît clarifier votre question alors. A quel point arrêtez-vous d'ajouter le "1"? Vous avez seulement montré des exemples avec 501, 751 et 1001, et vous dites "lastnumber + 1" sans autre qualification. – markspace

+0

regarde mon premier bloc de code, il commence dans le 1000, 501, 751, son juste exemple, je vais le réparer dans l'op – user2582318

Questions connexes