2012-11-26 3 views
-2

Comment est-ce que je pourrais ne pas enregistrer le dossier si l'utilisateur essayait d'entrer un numéro d'identification précédemment utilisé? J'ai essayé une boucle while, cela fonctionne pour la deuxième fois demandant à l'utilisateur, il ne fonctionnera pas après cela. J'ai pensé à utiliser un tableau?Comment déterminer si un nombre a déjà été utilisé dans une variable?

import java.util.*; 

import java.io.*; 
public class CreateCustomerFile 
{ 
    public static void main(String[] args) throws IOException 
    { 
     int pos; 
     RandomAccessFile it = 
     new RandomAccessFile("CustomerFile.txt", "rw"); 
     Scanner input = new Scanner(System.in); 

     int id; 
     String name; 
     int zip; 
     final int RECORDSIZE = 100; 
     final int NUMRECORDS = 1000; 
     final int STOP = 99; 
     try 
     { 


     byte [] padding = new byte[RECORDSIZE]; 
    Arrays.fill(padding, (byte)0); 
    for(int x = 0; x < NUMRECORDS; ++x) 
    { 
     it.write(padding); 
    } 

     } 

     catch(IOException e) 
     { 
     System.out.println("Error: " + e.getMessage()); 
     } 
     finally 
     { 
     it.close(); 
     } 
     it = 
     new RandomAccessFile("CustomerFile.txt","rw"); 
     try 
     { 
     System.out.print("Enter ID number" + 
         " or " + STOP + " to quit "); 

     id = input.nextInt(); 
     while(id != STOP) 
     { 
      input.nextLine(); 

      System.out.print("Enter last name"); 
      name = input.nextLine(); 
       while(name.length() > 7 || name.length() <7) 
       { 
       System.out.print("Name must be 7 characters; Enter last name"); 
      name = input.nextLine(); 
       } 
      System.out.print("Enter zipcode "); 
      zip = input.nextInt(); 
      pos = id - 1; 
      it.seek(pos * RECORDSIZE); 
      it.writeInt(id); 
       it.writeUTF(name); 
      it.writeInt(zip); 
       System.out.print("Enter ID number" + 
       " or " + STOP + " to quit "); 
      int id1 = input.nextInt(); 

       if(id == id1) 
       { 
      System.out.print("Id has been previously used"); 

       System.out.print("Enter ID number" + 
       " or " + STOP + " to quit "); 
      id1 = input.nextInt(); 

       } 
       id = id1; 

       } 

     } 

     catch(IOException e) 
     { 
     System.out.println("Error: " + e.getMessage()); 
     } 
     finally 
     { 
     it.close(); 
     } 
    } 
    } 
+0

Bon, tout d'abord j'avais l'impression de mal. Eh bien, la seule façon de le faire en suivant ce qui est venu à contacter la variable jusqu'à présent (sorte de valeurs en double). Pour dire, stockez-le ---> si le tableau peut vous aider au niveau minimum, en espérant que vous connaissez la longueur dont vous avez besoin pour déclarer le tableau sinon un meilleur contrôle comme une collection ditionary. Ensuite, rincez-le. – bonCodigo

Répondre

2

Vous devez envisager d'utiliser UUID's pour les identificateurs uniques.

0

On dirait que vous pourriez avoir besoin d'un hashtable/dictionnaire.

Hashtable Java/mise en œuvre dictionnaire peut être trouvé:

http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Dictionary.html

de base Exemple:

import java.util.*; 
public class DictionaryDemo { 
public static void main(String[] args) 
{ 
Dictionary d=new Hashtable(); 

    d.put("1", "a"); 
    d.put("2","b"); 
    d.put("3","ck"); 
    d.put("4","c"); 
    d.put("10","d"); 
    System.out.println(d.get("10")); 
    System.out.println(d.remove("10")+" has been removed"); 
    System.out.println("the value of key 10 = " +d.get("10")); 

for (Enumeration e = d.keys();e.hasMoreElements();) 
    System.out.println(e.nextElement()); 
    System.out.println(e.nextElement()); 

} 
} 
Questions connexes