Java 发出使用链表计算的操作返回值

Java 发出使用链表计算的操作返回值,java,list,linked-list,Java,List,Linked List,我目前正在编写代码,旨在将字符串解析为链表,并将该链表用作计算操作的手段。如图所示,我将操作字符串当前设置为“1+2”,当运行时,它返回整数0 非常感谢您的帮助 import java.awt.Dimension; import java.util.LinkedList; import java.util.List; public class LinkedListCalculator { static List<String> CalcInput = new LinkedLis

我目前正在编写代码,旨在将字符串解析为链表,并将该链表用作计算操作的手段。如图所示,我将操作字符串当前设置为“1+2”,当运行时,它返回整数0

非常感谢您的帮助

import java.awt.Dimension;
import java.util.LinkedList;
import java.util.List;


public class LinkedListCalculator {

static List<String> CalcInput = new LinkedList<String>();
static String operation = "1+2";
static int equationLength = operation.length();
static int result = 0;
static int num = 0;
static int mul = 1;
static int finalNum = 0;
static char lastOperator = 0;


public static void addToList() {
    String finalNumString;
    if (lastOperator == '+') {
        finalNumString = Integer.toString(finalNum);
        CalcInput.add(finalNumString);
        CalcInput.add("+");
    } else if (lastOperator == '-') {
        finalNumString = Integer.toString(finalNum);
        CalcInput.add(finalNumString);
        CalcInput.add("-");
    } else if (lastOperator == '*') {
        finalNumString = Integer.toString(finalNum);
        CalcInput.add(finalNumString);
        CalcInput.add("*");
    } else if (lastOperator == '/') {
        finalNumString = Integer.toString(finalNum);
        CalcInput.add(finalNumString);
        CalcInput.add("/");
    }
}

public static void computeList() {
    int size = CalcInput.size();
    String lastIndex = null;
    for (int i = 0; i > size; i++) {
        String currentIndex = CalcInput.get(i);
            if (i > 0) {
                lastIndex = CalcInput.get(i - 1);
            }

            if (currentIndex == "+") {
                int lastIndexInt = Integer.valueOf(lastIndex);
                result += lastIndexInt;
            }
            if (currentIndex == "-") {
                int lastIndexInt = Integer.valueOf(lastIndex);
                result -= lastIndexInt;
            }
            if (currentIndex == "*") {
                int lastIndexInt = Integer.valueOf(lastIndex);
                result *= lastIndexInt;
            }
            if (currentIndex == "/") {
                int lastIndexInt = Integer.valueOf(lastIndex);
                result /= lastIndexInt;
            }
    }

}

public static void main(String [] args) {
    for (int currEqnCharNdx = 0; currEqnCharNdx < equationLength ; currEqnCharNdx++) {
        char j = operation.charAt(currEqnCharNdx);

        if (j >= '0' && j <= '9') {
            num = j - '0';
            finalNum *= mul;
            finalNum += num;
            mul = 10;
        } else if (operation.charAt(currEqnCharNdx) == '+') {
            addToList();
            lastOperator = '+';
            mul = 1;
            finalNum = 0;
        } else if (operation.charAt(currEqnCharNdx) == '-') {
            addToList();
            lastOperator = '-';
            mul = 1;
            finalNum = 0;
        } else if (operation.charAt(currEqnCharNdx) == '*') {
            addToList();
            lastOperator = '*';
            mul = 1;
            finalNum = 0;
        } else if (operation.charAt(currEqnCharNdx) == '/') {
            addToList();
            lastOperator = '/';
            mul = 1;
            finalNum = 0;
        } 
    }
    int i = CalcInput.size();
    computeList();
    System.out.println("result: " + result);
}
}
导入java.awt.Dimension;
导入java.util.LinkedList;
导入java.util.List;
公共类LinkedListCalculator{
static List=new LinkedList();
静态字符串操作=“1+2”;
static int equalationLength=operation.length();
静态int结果=0;
静态int num=0;
静态int mul=1;
静态int finalNum=0;
静态字符运算符=0;
公共静态void addToList(){
字符串finalNumString;
if(lastOperator=='+'){
finalNumString=Integer.toString(finalNum);
添加(finalNumString);
加上“+”;
}else if(lastOperator=='-'){
finalNumString=Integer.toString(finalNum);
添加(finalNumString);
(ii)加入(“—”;
}else if(lastOperator=='*'){
finalNumString=Integer.toString(finalNum);
添加(finalNumString);
(ii)加入(“*”);
}else if(lastOperator=='/')){
finalNumString=Integer.toString(finalNum);
添加(finalNumString);
加上(“/”);
}
}
公共静态无效计算列表(){
int size=put.size();
字符串lastIndex=null;
对于(int i=0;i>size;i++){
字符串currentIndex=carcinput.get(i);
如果(i>0){
lastIndex=carcinput.get(i-1);
}
如果(currentIndex==“+”){
int lastIndexInt=Integer.valueOf(lastIndex);
结果+=最新指数;
}
如果(当前索引=“-”){
int lastIndexInt=Integer.valueOf(lastIndex);
结果-=最新指数;
}
如果(currentIndex==“*”){
int lastIndexInt=Integer.valueOf(lastIndex);
结果*=lastIndexInt;
}
如果(currentIndex==“/”){
int lastIndexInt=Integer.valueOf(lastIndex);
结果/=lastIndexInt;
}
}
}
公共静态void main(字符串[]args){
对于(int currenqncharndx=0;currenqncharndx如果(j>='0'&&j您的代码有很多错误。以下是一些错误指针:

String lastIndex = null;
    for (int i = 0; i > size; i++) {
这将永远不会执行(更改为i 我还怀疑addToList()应该在设置lastOperator之后发生,等等

 else if (operation.charAt(currEqnCharNdx) == '+') {
                addToList();
                lastOperator = '+';
                mul = 1;
                finalNum = 0;
            }
另外,这里(在addToList()中):

你加上最后一个数字,加上+号,但是没有任何东西会导致2被加上,所以当它在最后加起来时(如果你修正了我提到的其他事情),它将加1+得到1的结果(而不是1+2得到3)

下面是它输出1(见上面最后一点)以便OP再现的代码:

import java.awt.Dimension;
import java.util.LinkedList;
import java.util.List;
import java.util.StringTokenizer;


public class LinkedListCalculator {

static List<String> CalcInput = new LinkedList<String>();
static String operation = "1+2";
static int equationLength = operation.length();
static int result = 0;
static int num = 0;
static int mul = 1;
static int finalNum = 0;
static char lastOperator = 0;


public static void addToList() {
    String finalNumString;
    if (lastOperator == '+') {
        finalNumString = Integer.toString(finalNum);
        CalcInput.add(finalNumString);
        CalcInput.add("+");
    } else if (lastOperator == '-') {
        finalNumString = Integer.toString(finalNum);
        CalcInput.add(finalNumString);
        CalcInput.add("-");
    } else if (lastOperator == '*') {
        finalNumString = Integer.toString(finalNum);
        CalcInput.add(finalNumString);
        CalcInput.add("*");
    } else if (lastOperator == '/') {
        finalNumString = Integer.toString(finalNum);
        CalcInput.add(finalNumString);
        CalcInput.add("/");
    }
}

public static void computeList() {
    int size = CalcInput.size();
    String lastIndex = null;
    for (int i = 0; i < size; i++) {
        String currentIndex = CalcInput.get(i);
            if (i > 0) {
                lastIndex = CalcInput.get(i - 1);
            }

            if (currentIndex == "+") {
                int lastIndexInt = Integer.valueOf(lastIndex);
                result += lastIndexInt;
            }
            if (currentIndex == "-") {
                int lastIndexInt = Integer.valueOf(lastIndex);
                result -= lastIndexInt;
            }
            if (currentIndex == "*") {
                int lastIndexInt = Integer.valueOf(lastIndex);
                result *= lastIndexInt;
            }
            if (currentIndex == "/") {
                int lastIndexInt = Integer.valueOf(lastIndex);
                result /= lastIndexInt;
            }
    }

}

public static void main(String [] args) {



    for (int currEqnCharNdx = 0; currEqnCharNdx < equationLength ; currEqnCharNdx++) {
        char j = operation.charAt(currEqnCharNdx);

        if (j >= '0' && j <= '9') {
            num = j - '0';
            finalNum *= mul;
            finalNum += num;
            mul = 10;
        } else if (operation.charAt(currEqnCharNdx) == '+') {

            lastOperator = '+';
            addToList();
            mul = 1;
            finalNum = 0;
        } else if (operation.charAt(currEqnCharNdx) == '-') {
            addToList();
            lastOperator = '-';
            mul = 1;
            finalNum = 0;
        } else if (operation.charAt(currEqnCharNdx) == '*') {
            addToList();
            lastOperator = '*';
            mul = 1;
            finalNum = 0;
        } else if (operation.charAt(currEqnCharNdx) == '/') {
            addToList();
            lastOperator = '/';
            mul = 1;
            finalNum = 0;
        } 
    }
    int i = CalcInput.size();
    computeList();
    System.out.println("result: " + result);
}
}
导入java.awt.Dimension;
导入java.util.LinkedList;
导入java.util.List;
导入java.util.StringTokenizer;
公共类LinkedListCalculator{
static List=new LinkedList();
静态字符串操作=“1+2”;
static int equalationLength=operation.length();
静态int结果=0;
静态int num=0;
静态int mul=1;
静态int finalNum=0;
静态字符运算符=0;
公共静态void addToList(){
字符串finalNumString;
if(lastOperator=='+'){
finalNumString=Integer.toString(finalNum);
添加(finalNumString);
加上“+”;
}else if(lastOperator=='-'){
finalNumString=Integer.toString(finalNum);
添加(finalNumString);
(ii)加入(“—”;
}else if(lastOperator=='*'){
finalNumString=Integer.toString(finalNum);
添加(finalNumString);
(ii)加入(“*”);
}else if(lastOperator=='/')){
finalNumString=Integer.toString(finalNum);
添加(finalNumString);
加上(“/”);
}
}
公共静态无效计算列表(){
int size=put.size();
字符串lastIndex=null;
对于(int i=0;i0){
lastIndex=carcinput.get(i-1);
}
如果(currentIndex==“+”){
int lastIndexInt=Integer.valueOf(lastIndex);
结果+=最新指数;
}
如果(当前索引=“-”){
int lastIndexInt=Integer.valueOf(lastIndex);
结果-=最新指数;
}
如果(currentIndex==“*”){
int lastIndexInt=Integer.valueOf(lastIndex);
结果*=lastIndexInt;
}
如果(currentIndex==“/”){
int lastIndexInt=Integer.valueOf(lastIndex);
结果/=lastIndexInt;
}
}
}
公共静态void main(字符串[]args){
对于(int currenqncharndx=0;currenqncharndx如果(j>='0'&&j请提供有关出错原因的详细信息。您是否尝试过使用调试器单步执行代码?如果这不是一个pet项目,请使用真正的表达式解析器,如有关特定代码段引发异常时应具有堆栈跟踪的问题中所述。如果存在逻辑错误(错误结果),应该有理由解释作者无法在调试器中捕获它的原因。请添加更多信息。谢谢!哦,天哪,我不知道我怎么没有捕获这些,谢谢!但是,它仍然返回0。有指针吗?如果你翻转我提到的>并移动addToList()在lastOperator=?行下面,您应该会得到一个结果1(请参阅上面我的最后一次编辑)
import java.awt.Dimension;
import java.util.LinkedList;
import java.util.List;
import java.util.StringTokenizer;


public class LinkedListCalculator {

static List<String> CalcInput = new LinkedList<String>();
static String operation = "1+2";
static int equationLength = operation.length();
static int result = 0;
static int num = 0;
static int mul = 1;
static int finalNum = 0;
static char lastOperator = 0;


public static void addToList() {
    String finalNumString;
    if (lastOperator == '+') {
        finalNumString = Integer.toString(finalNum);
        CalcInput.add(finalNumString);
        CalcInput.add("+");
    } else if (lastOperator == '-') {
        finalNumString = Integer.toString(finalNum);
        CalcInput.add(finalNumString);
        CalcInput.add("-");
    } else if (lastOperator == '*') {
        finalNumString = Integer.toString(finalNum);
        CalcInput.add(finalNumString);
        CalcInput.add("*");
    } else if (lastOperator == '/') {
        finalNumString = Integer.toString(finalNum);
        CalcInput.add(finalNumString);
        CalcInput.add("/");
    }
}

public static void computeList() {
    int size = CalcInput.size();
    String lastIndex = null;
    for (int i = 0; i < size; i++) {
        String currentIndex = CalcInput.get(i);
            if (i > 0) {
                lastIndex = CalcInput.get(i - 1);
            }

            if (currentIndex == "+") {
                int lastIndexInt = Integer.valueOf(lastIndex);
                result += lastIndexInt;
            }
            if (currentIndex == "-") {
                int lastIndexInt = Integer.valueOf(lastIndex);
                result -= lastIndexInt;
            }
            if (currentIndex == "*") {
                int lastIndexInt = Integer.valueOf(lastIndex);
                result *= lastIndexInt;
            }
            if (currentIndex == "/") {
                int lastIndexInt = Integer.valueOf(lastIndex);
                result /= lastIndexInt;
            }
    }

}

public static void main(String [] args) {



    for (int currEqnCharNdx = 0; currEqnCharNdx < equationLength ; currEqnCharNdx++) {
        char j = operation.charAt(currEqnCharNdx);

        if (j >= '0' && j <= '9') {
            num = j - '0';
            finalNum *= mul;
            finalNum += num;
            mul = 10;
        } else if (operation.charAt(currEqnCharNdx) == '+') {

            lastOperator = '+';
            addToList();
            mul = 1;
            finalNum = 0;
        } else if (operation.charAt(currEqnCharNdx) == '-') {
            addToList();
            lastOperator = '-';
            mul = 1;
            finalNum = 0;
        } else if (operation.charAt(currEqnCharNdx) == '*') {
            addToList();
            lastOperator = '*';
            mul = 1;
            finalNum = 0;
        } else if (operation.charAt(currEqnCharNdx) == '/') {
            addToList();
            lastOperator = '/';
            mul = 1;
            finalNum = 0;
        } 
    }
    int i = CalcInput.size();
    computeList();
    System.out.println("result: " + result);
}
}