NumberFormatException.for InputString: "(" - PullRequest
0 голосов
/ 04 мая 2019

Во время выполнения моего кода я получаю NumberFormatException:

Exception in thread "main" java.lang.NumberFormatException: For input string: "("
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:569)
    at java.lang.Integer.parseInt(Integer.java:615)
    at collection.MyExpressionTrees.evaluateHelper(MyExpressionTrees.java:58)
    at collection.MyExpressionTrees.evaluateHelper(MyExpressionTrees.java:78)
    at collection.MyExpressionTrees.evaluate(MyExpressionTrees.java:50)



public class MyExpressionTrees extends MyBinaryTree {

public MyExpressionTrees() {

    root = null;

}

public MyExpressionTrees(MyBinaryTreeNode rt) {

    root = rt;

}

public int evaluate() {

    if (root == null) {
        return -1000000;
    }

    return evaluateHelper(root);

}

private int evaluateHelper(MyBinaryTreeNode rt) {

    if (rt.left == null) {

        return Integer.parseInt(rt.data.toString());

    }

    switch (rt.data.toString()) {

        case "+":

            return evaluateHelper(rt.left) + evaluateHelper(rt.right);

        case "-":

            return evaluateHelper(rt.left) - evaluateHelper(rt.right);

        case "/":

            return evaluateHelper(rt.left) / evaluateHelper(rt.right);

        case "*":

            return evaluateHelper(rt.left) * evaluateHelper(rt.right);

        case "%":

            return evaluateHelper(rt.left) % evaluateHelper(rt.right);

        default:

            return -1000000;

    }

}

}

Ответы [ 2 ]

0 голосов
/ 06 мая 2019

открытый класс Project_t {

private static final String fpath = "../COSC241_P4_Input.txt";

private static MyExpressionTree exTree = new MyExpressionTree();

private static List<String> infList;

private static final MyDeque d = new MyDeque();

private static final MyStack st = new MyStack();

private static int result;

/**
 *
 * Test method for the project. Handles file input and output, as well as *
 * running tests on each expression in the input file. *
 */
public static void test() {

    result = 0;

    File out = new File("../COSC241_P4_Output_tdreed0.txt");

    try {

        //Stores each line of the file in a list.
        infList = FP.readFile(fpath).stream().filter((s) -> !s.isEmpty()).collect(Collectors.toList());

        //If the output file does not currently exist, create it.
        if (!out.exists()) {

            out.createNewFile();

        }

        try (PrintWriter writer = new PrintWriter(out)) {

            for (String s : infList) {

                String root = s.trim().replaceAll(" ", "").replaceAll("\\[", "(").replaceAll("\\]", ")");

                writer.println("Original Infix:\t" + root);

                if (!ExpressionRegulators.allPMatched(root) || !ExpressionRegulators.allValid(root) || !ExpressionRegulators.isValidOrder(root)) {

                    writer.println("Invalid Expression");

                    writer.println();

                } else {

                    buildExpressionTree(root);

                    //Performs traversals on the tree
                    exTree.preorderTraversal();

                    writer.println("Preorder: " + exTree.preorderStr);

                    exTree.inorderTraversal();

                    writer.println("Inorder: " + exTree.inorderStr);

                    exTree.postorderTraversal();

                    writer.println("Postorder: " + exTree.postorderStr);

                    result = exTree.evaluate();

                    writer.println("Result: " + result);

                    writer.println();

                    exTree.clear();

                }

            }

        }

    } catch (IOException e) {

        System.out.println(e.toString());

        System.exit(0);

    }

}
0 голосов
/ 04 мая 2019

NumberFormatException :

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

public static int parseInt (String s) :

Разбирает строковый аргумент как десятичное целое число со знаком. Персонажи в строке должны быть все десятичные цифры, за исключением того, что первый символом может быть знак минус ASCII '-' ('\ u002D'), чтобы указать отрицательное значение или знак плюс ASCII '+' ('\ u002B'), чтобы указать положительное значение. Полученное целочисленное значение возвращается точно так, как если бы аргумент и основание 10 были приведены в качестве аргументов Метод parseInt (java.lang.String, int).

"(" - это не число.

Да, Фамалам Фэмми!

...