如果用户尝试输入,我将如何不保存记录 以前使用的身份证号码? 我尝试了一个while循环,因为它第二次询问用户,它之后不会工作。我想过使用数组吗?
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 :(得分:2)
您应该考虑将UUID's用于唯一标识符。
答案 1 :(得分:0)
听起来你可能需要哈希表/字典。
可以找到Java的哈希表/字典实现:
http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Dictionary.html
基本示例:
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());
}
}