чтение и запись выражений из файла для Java - PullRequest
1 голос
/ 02 ноября 2019

Здравствуйте, первый раз пользователь здесь не уверен, правильно ли я делаю, но здесь ничего не происходит.

Я пытаюсь вычислить математические выражения, такие как 3 * (2 + 7) -9 или 11/5 * (3 + 3), прочитав его из файла, а затем записав ответ обратно в файл. Я не уверен, как читать все выражение целиком, так как я делал только простые вещи, такие как чтение 3 строк и переход в следующий раз из файла. и идея состоит в том, чтобы использовать выражение, прочитанное из файлов, и вычислить их, используя стеки в Java. Я понял, как вычислить его, не читая из файла, но не совсем уверен, как объединить все это в одну рабочую программу, какие-нибудь идеи или советы?

1 Ответ

0 голосов
/ 02 ноября 2019

Это зависит от того, как вы думаете или знаете, математические выражения будут записаны в текстовом файле. Если это файл только с выражениями, разделенными каким-либо символом, то вы можете использовать что-то вроде этого:

    ArrayList<String> expressions = new ArrayList<String>();
    try (Scanner s = new Scanner(new File("test.txt"))) {
        while (s.hasNextLine()) {
            String fullLine = s.nextLine();
            String[] expArray = fullLine.split(",");
            for (String exp : expArray) {
                expressions.add(exp);
            }
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

Вам не нужно упаковывать его в массив, если вы не хотите. Вы можете рассчитать и распечатать его прямо в файл. Но это займет каждую полную строку файла и разделит ее на кусочки строки между запятыми.

Я просто в этом случае принимаю запятую. Если выражения разделены пробелом, вы можете пропустить .split() и просто использовать s.next() вместо s.nextLine().

Вы также можете использовать функцию сканера useDelimiter(). Установите разделитель на то, что разделяет выражения, и затем, когда вы используете s.next(), он выдаст вам токены между разделителями.

Вам также придется сделать немного больше, чтобы фактически проанализировать выражение какв настоящее время он хранится в виде строки. Это не должно быть слишком сложно.

...