Я пишу программу-интерпретатор на Java, которая принимает строку, представляющую набор команд для назначения переменных, и возвращает переменную, отображаемую в последней строке.Так что
A = 2
B = 4
C = A + B
C
при подаче в код должно возвращать 6, что является значением C. Пока у меня есть следующий код:
public class Interpreter2 {
public static int Scanner() {
int returnStatement = 0;
//Input instruction set in the quotation marks below
String input = "A = 2\n B = 8\n C = A + B\n C";
String[] lines = input.split("\n");
for (String i : lines) {
i = i.replaceAll("\\s", "");
if (i.contains("=")) {
String[] sides = i.split("=");
String leftHand = sides[0];
String rightHand = sides[1];
int a = Integer.parseInt(leftHand);
if (rightHand.contains("+")) {
String[] add = rightHand.split("+");
String num1 = add[0];
String num2 = add[1];
int num3 = Integer.parseInt(num1);
int num4 = Integer.parseInt(num2);
int sum = num3 + num4;
a = sum;
}else {
int b = Integer.parseInt(rightHand);
a += b;
return a;
}
}else {
returnStatement = Integer.parseInt(i);
return returnStatement;
}
}
return returnStatement;
}
public static void main(String[] args) {
System.out.println(Scanner());
}
}
В настоящее время, однако, это возвращает
Exception in thread "main" java.lang.NumberFormatException: For input string: "A"
Это означает, что если в наборе команд есть буква, она не будет работать.Если int a
просто назначено как 0, код возвращает 2
.Кто-нибудь знает, как я могу это исправить?