Wydawanie liczb jest czasami nieprawidłowe.

To jest moje zadanie, podając dane wejściowe wyrażenia składającego się z ciągu liter i operatorów (znak plus, znak minus i litery. IE: „b-d + e-f”) oraz plik ze zbiorem zmiennych / pary wartości oddzielone przecinkami (tj .: a = 1, b = 7, c = 3, d = 14) napisz program, który wygeneruje wynik wprowadzonego wyrażenia. Na przykład, jeśli dane wejściowe wyrażenia były („a + b + c -d”), a dane wejściowe do pliku były następujące (a = 1, b = 7, c = 3, d = 14), wynik wynosiłby -3. Hi Próbuję wykonać prosty kod java, który wysyła liczbę, jeśli dodam 4 litery. Kiedy wykonuję różne kombinacje, takie jak d-c + a + b, daje mi to liczbę inccorect taką jak 118,0. Czy ktoś może mi powiedzieć, gdzie w moim kodzie błędne są moje obliczenia ..

Dziękuję Ci

ValVarPairs.txt zawiera te liczby-> a = 100, b = 5, c = 10, d = 13

To właśnie kodowałem.

    package com.ecsgrid;

import java.io.*;

public class testC {

public static void main(String[] args) {
  int i = 0,j = 0;
  double result, values[] = new double[4];
  char k, operators[] = new char[3];
  for (i = 0; i <= 2; i++) 
    operators[i] = '+';      // default is to add the values

  File myfile;
  StreamTokenizer tok;
  BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
  String InputText;

  i = 0;
  try {
    myfile = new File("C:\\VarValPairs.txt");
    tok = new StreamTokenizer(new FileReader(myfile));  
    tok.eolIsSignificant(false);

    while ((tok.nextToken() != StreamTokenizer.TT_EOF) && (i <= 3)){
      if ((tok.ttype == StreamTokenizer.TT_NUMBER))
        values[i++] = tok.nval;
      }
  }
  catch(FileNotFoundException e) { System.err.println(e);  return; }
  catch(IOException f) { System.out.println(f); return; }

  System.out.println("Enter letters and operators:");

  try {
    InputText = in.readLine(); 
  }  
  catch(IOException f) { System.out.println(f); return; }

  for (i = 0; i < InputText.length(); i++)
  {
     k = InputText.charAt(i);
     if ((k == '+') || (k == '-'))
     {
        if (j <= 2) operators[j++] = k;   
     }
  } 

  result = values[0];
  for (i = 0; i <= 2; i++){
   if (operators[i] == '+')
     result = result + values[i+1];  
   else
     result = result - values[i+1];
  }
  System.out.println(result);  
 }
}

questionAnswers(1)

yourAnswerToTheQuestion