Сравните значения вывода программы с существующими значениями, сохраненными в текстовом файле. например вывод программы версии 01 - «Помидоры», 40
Текстовый файл:
BufferedReader buffet = new BufferedReader(new FileReader("sqlcalculation.txt"));
try {
StringBuilder sb = new StringBuilder();
String line = buffet.readLine();
while (line != null) {
sb.append(line);
sb.append(System.lineSeparator());
line = buffet.readLine();
String[] columns = line.split(" ");
System.out.println(line);
}
String everything = sb.toString();
} finally {
buffet.close();
}
(название) (номер) (версия)
Это возвращает:
Vegetables 33 01
Fruits 28 02
Meat 50 03
Итак, мне нужно извлечь значение для [НОМЕР] в случае, если [ВЕРСИЯ] = 01. Есть идеи, как это сделать?
Я сравниваю это значение с новым выводом программы, следовательно, я хочу условно заменить старое значение для числа и имени новым значением для числа и имени.
Для столбца 3 = 01 я хочу заменить [овощи] и [33] на [помидоры] и [40] (новый вывод программы).
if (version==01) {
// numnber=.... (THIS I WANT from READING/UPDATING THE TEXT FILE !)
number=40; //this I want automatically
} else if (version==02) {
;
//number=...
number=53;
} else {
System.out.println("something went wrong");;
}
}
это целое число, но преобразованное в строку в процессе чтения. Да, это правда, но проблема не в этом. Проблема в том, что я не нашел подходящего метода, чтобы найти в текстовом файле значение числа для версии = 1 или версии, равной «1». Итак, что-то вроде версии (column03) = 01 (или равно), чем извлекает (и условно заменяет) значение column01 (имя строки) и column2 (целое число).




Вам нужно рассматривать все как строки, поскольку у вас есть массив String, columns, с которым вы работаете. Измените цикл while, как показано ниже
while (line != null) {
sb.append(line);
sb.append(System.lineSeparator());
line = buffet.readLine();
String[] columns = line.split(" ");
switch (columns[2]) {
case "01":
columns[0] = "tomatos";
columns[1] = "40";
break;
case "02":
columns[0] = "Something";
columns[1] = "53";
//case "03" ... and so on for rest of versions
default:
//Unknown version. add some error handling
break;
}
// do something with columns[]
}
Что за тип
version? Если это строка, вам нужно использоватьequals()