题目:
文件numbers.dat存放6个32位整数。使用RandomAccessFile类完成以下功能:
(1)若运行时不带参数,则生成numbers.dat文件并初始化6个整数均为0。
(2)若运行时带一个参数,内容为1,读入numbers.dat文件并输出所有整数;
(3)若运行时带一个参数,内容为2,提示用户输入整数序号(1~6)以及一个新的整数,共6次,需将1~6号都更新掉,更新顺序由用户决定。将输入的整数写入文件中以更新文件数据;
(4)若运行时带参数且参数为其他内容,不做任何工作。
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.InputMismatchException;
import java.util.Scanner;
public class TestRandomAccessFile {
public static void main(String[] args) throws IOException {
RandomAccessFile randomAccessFile = new RandomAccessFile("numbers.dat","rw");
if(args.length==0){
for (int i = 0; i < 6; i++) {
int num = 0;
randomAccessFile.writeInt(num);
}
}else if(args.length==1 && args[0].equals("1")){
System.out.println("目前文件中的数据有: ");
for (int i = 0; i < 6; i++) {
int num = randomAccessFile.readInt();
System.out.print(num+" ");
}
System.out.println();
}else if(args.length==1 && args[0].equals("2")){
Scanner scanner = new Scanner(System.in);
boolean[] record = new boolean[6];
for (int i = 0; i < record.length; i++) {
record[i]=true;
}
for (int i = 0; i < 6; i++) {
int serialNumber;
while (true){
System.out.print("请输入序号(1~6) : ");
try {
serialNumber = scanner.nextInt();
if(!(serialNumber>=1 && serialNumber<=6) || !(record[serialNumber-1])){
throw new InputMismatchException();
}
if(record[serialNumber-1]) {
record[serialNumber - 1] = false;
}
break;
}catch (InputMismatchException e){
System.out.println("输入的数字不是1~6的整数");
System.out.println("或者该序号的数字已经设置过了");
System.out.println("你还能够输入的序号有 :");
for (int j = 0; j < record.length; j++) {
if(record[j]==true){
System.out.print((j+1)+" ");
}
}
System.out.println();
System.out.println();
scanner.nextLine();
}
}
System.out.print("请输入序号"+serialNumber+"对应的新的整数 : ");
int newNumber = scanner.nextInt();
randomAccessFile.seek((serialNumber-1)*4);
randomAccessFile.writeInt(newNumber);
System.out.println();
}
}else {
}
}
}
hhhhhh
其实这个题是我做的时候一开始把题目看复杂了,被动改编.........



