将数组更改为 ArrayList 后修改程序中的方法

Modifying methods in my program after changing an array to an ArrayList

提问人:Beau Moody 提问时间:3/22/2023 更新时间:3/22/2023 访问量:18

问:

这是我写的,第 71、74、77、78、79、82、84、85、89、90、91、94、96 和 104 行有错误。这些都是在我更改数组 String[] 标记后出现的;to 和 ArrayList。这是我在下面的代码。

public void processProgram() {
    //Declare Variables
       String fileName;
       String line;
       ArrayList tokens = new ArrayList();
       HashMap<String, Double> variables = new HashMap<String, Double>();
       int lineNumber = 0;
       //Get File Name
       fileName = getFileName();
       //Error Checking
       if(fileName == null) {
           errors.setText("Error: No file selected");
           return;
       }
       //Open File
       try {
           BufferedReader reader = new BufferedReader(new FileReader(fileName));
           //Read File
           while((line = reader.readLine()) != null) {
               lineNumber++;
               tokens = line.split(" ");
               //Check for GOTO Statement
               if(tokens.equals("GOTO")) {
                   lineNumber = Integer.parseInt(tokens);
               }
               //Check for Conditional Statement
               else if(tokens[0].equals("IF")) {
                   double value = Double.parseDouble(tokens[3]);
                   double checkValue = variables.get(tokens[1]);
                   //Check if statement is true
                   if(checkValue == value) {
                       tokens = Arrays.copyOfRange(tokens, 5, tokens.length);
                       //Evaluate expression
                       double expressionValue = evaluateExpression(tokens, variables);
                       variables.put(tokens[0], expressionValue);
                   }
               }
               //Check for Assign Statement
               else if(tokens.length == 3 && tokens[1].equals("=")) {
                   double expressionValue = evaluateExpression(tokens, variables);
                   variables.put(tokens[0], expressionValue);
               }
               //Check for Print Statement
               else if(tokens[0].equals("PRINT")) {
                   try {
                       double printValue = variables.get(tokens[1]);
                       result.append(String.format("%.2f", printValue) + "\n");
                   } catch (NullPointerException e) {
                       errors.setText("Error: Line " + lineNumber + ": Variable not declared");
                       return;
                   }
               }
               //Check for End Statement
               else if(tokens[0].equals("END")) {
                   return;
               }
               //Error Handling
               else {
                   errors.setText("Error: Line " + lineNumber + " is invalid");
                   return;
               }
           }
           reader.close();
       } catch (Exception e) {
           e.printStackTrace();
       }
    }
    //Evaluate Expression
    public double evaluateExpression(String[] tokens, HashMap<String, Double> variables) {
       double result = 0;
       //Loop through expression
       for(int i = 0; i < tokens.length; i++) {
           if(i == 0) {
               result = Double.parseDouble(tokens[i]);
           }
           //Check for operator
           else if(tokens[i].equals("+")) {
               result += Double.parseDouble(tokens[i+1]);
               i++;
           } else if(tokens[i].equals("-")) {
               result -= Double.parseDouble(tokens[i+1]);
               i++;
           } else if(tokens[i].equals("*")) {
               result *= Double.parseDouble(tokens[i+1]);
               i++;
           } else if(tokens[i].equals("/")) {
               result /= Double.parseDouble(tokens[i+1]);
               i++;
           } else {
               try {
                   result += variables.get(tokens[i]);
               } catch (NullPointerException e) {
                   errors.setText("Error: Variable not declared");
                   return -1;
               }
           }
       }
       return result;
    }
    }

我对编程非常陌生,我尝试查找 ArrayLists 而不是数组的修改方法,因为我们不允许在这个实验室中使用它们。我非常困住,不知道该怎么办。

Arrays ArrayList 方法

评论


答:

1赞 Allison Chen 3/22/2023 #1

Arrays并且是不同的。如果更改为 list,则应使用 代替 。Listtokenstokens.get(i)tokens[i]