【问题标题】:Evaluating Expression program trouble taking user input评估表达式程序在处理用户输入时遇到问题
【发布时间】:2019-07-12 06:55:10
【问题描述】:

很多代码已经写好了,但我添加的代码是包含 ^ 和 %。它是使用堆栈以正确顺序评估表达式的代码。我遇到的问题是主要方法,并添加了一种获取用户输入并打印出问题结果的方法。我只是包括那部分代码

16 import java.util.Stack;
17 import java.util.Scanner;
18 
19 public class EvaluateExpression {
20  public static void main(String[] args) {
21       
22      Scanner input = new Scanner(System.in);
23      System.out.println("Enter the expression to be evaluated: ");
24      String expression = input.nextLine();
25      
26      //Check number of arguments passed
27      if (args.length != 1) {
28          System.out.println("Usage: java EvaluateExpression \"expression\"");
29          System.exit(1);
30      }
31      try {
32          System.out.println(expression + " = " + 
33                  evaluateExpression(expression));
34      }
35      catch (Exception ex) {
36          ex.printStackTrace();
37          System.out.println("Wrong expression: " + expression);
38      }
39      
40  }

预期结果:它正在打印要与结果一起评估的表达式。 但是当我尝试输入随机表达式时,这就是我得到的结果:

输入要计算的表达式:

6+9*8-7

用法:java EvaluateExpression“表达式”

【问题讨论】:

  • 你没有通过命令行将任何参数传递给你的程序,所以if (args.length != 1)返回true并退出程序。

标签: java arrays stack main args


【解决方案1】:

您的程序正在从标准输入读取。不需要检查 args 计数。 Args 是直接输入程序的程序参数。喜欢 ls *.txt 要么 java -cp . EvaluateExpression <myvalue>

希望这会有所帮助。

【讨论】:

  • 我尝试将程序的这一部分取出,如果我这样做,它会打印“错误的表达式:”+表达式部分。
  • 您是否按预期从扫描仪中获得表达式?可能evaluateExpression方法抛出异常。
  • 如果我取出那部分,它会给我错误 java.util.EmptyStackException 并打印“错误的表达式:”+ 表达式消息。
  • 打印表达式并在不同的行上计算结果。喜欢System.out.print(expression + " = "); System.out.println(evaluateExpression(expression));
  • 并调试您的程序以确保正确读取输入。我想你从 evaluateExpression 方法中得到了异常。
【解决方案2】:

这只是意味着 args.length 不同于 1。

【讨论】:

  • 我是这么认为的,所以我需要将表达式添加到 args 以使其评估正确?我很难弄清楚如何做到这一点。我试过用 args[0] 替换表达式,但我确信这是错误的做法。抱歉,我对此还是很陌生。
猜你喜欢
  • 2011-01-17
  • 1970-01-01
  • 2022-11-01
  • 2011-08-07
  • 2012-05-14
  • 1970-01-01
  • 1970-01-01
  • 2017-02-09
  • 2014-12-23
相关资源
最近更新 更多