Сравните выходные значения Java-программы с существующими значениями в текстовых файлах в определенном столбце, замените значения

Сравните значения вывода программы с существующими значениями, сохраненными в текстовом файле. например вывод программы версии 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");;
    }
    } 

Что за тип version? Если это строка, вам нужно использовать equals()

lucumt 26.11.2018 14:50

это целое число, но преобразованное в строку в процессе чтения. Да, это правда, но проблема не в этом. Проблема в том, что я не нашел подходящего метода, чтобы найти в текстовом файле значение числа для версии = 1 или версии, равной «1». Итак, что-то вроде версии (column03) = 01 (или равно), чем извлекает (и условно заменяет) значение column01 (имя строки) и column2 (целое число).

bram 26.11.2018 14:55
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
35
1

Ответы 1

Вам нужно рассматривать все как строки, поскольку у вас есть массив 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[]
}

Другие вопросы по теме