вот метод:
public static String normalizza(String x) {
for (int i = x.length(); i > 0; i--) {
if (x.substring(i, x.length()).equalsIgnoreCase(" ")) {
x = x.substring(0, i);
}
}
return x;
}
я должен прочитать строку из файла произвольного доступа и исключить пустые места, чтобы найти положение объекта
это атрибуты класса:
public class Iscritto {
private int id;
private String nome;
private String cognome;
private String dataNascita;
это метод поиска атрибута "nome" (с ним работает метод "normalizza"):
private static void cercaNome() {
Iscritto a = new Iscritto();
try {
File file = new File("C:\\temp\\iscritti.dat");
RandomAccessFile ra = new RandomAccessFile(file, "r");
String nome = JOptionPane.showInputDialog("Inserisci nome da cercare:");
ra.seek(0);
a.leggi(ra);
String nomeControllato = a.getNome();
nomeControllato = normalizza(nomeControllato);
int conta = 0;
if (nomeControllato.equalsIgnoreCase(nome)) {
int b = (int) ra.getFilePointer() - 2;
int position = b / 153;
ra.seek(position * 153);
a.leggi(ra);
System.out.println("iscritto: " + a);
} else {
while (!nomeControllato.equalsIgnoreCase(nome)) {
conta++;
ra.seek(conta * 153);
a.leggi(ra);
nomeControllato = a.getNome();
nomeControllato = normalizza(nomeControllato);
if (nomeControllato.equalsIgnoreCase(nome)) {
int b = (int) ra.getFilePointer() - 2;
int position = b / 153;
ra.seek(position * 153);
a.leggi(ra);
System.out.println("iscritto: " + a);
}
}
}
ra.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
это метод поиска для атрибута "данные" (нормальная пицца для этого не работает):
private static void cercaData() {
Iscritto a = new Iscritto();
try {
File file = new File("C:\\temp\\iscritti.dat");
RandomAccessFile ra = new RandomAccessFile(file, "r");
String data = JOptionPane.showInputDialog("Inserisci data da cercare (example : 12-MAG-2018):");
ra.seek(0);
a.leggi(ra);
String dataControllata = a.getDataNascita();
dataControllata = normalizza(dataControllata);
int conta = 0;
if (dataControllata.equalsIgnoreCase(data)) {
int b = (int) ra.getFilePointer() - 2;
int position = b / 153;
ra.seek(position * 153);
a.leggi(ra);
System.out.println("iscritto: " + a);
} else {
while (!dataControllata.equalsIgnoreCase(data)) {
conta++;
ra.seek(conta * 153);
a.leggi(ra);
dataControllata = a.getDataNascita();
dataControllata = normalizza(dataControllata);
if (dataControllata.equalsIgnoreCase(data)) {
int b = (int) ra.getFilePointer() - 2;
int position = b / 153;
ra.seek(position * 153);
a.leggi(ra);
System.out.println("iscritto: " + a);
}
}
}
ra.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
если я ищу «данные» и это не последний файл, это даст мне бесконечный «нулевой» вывод