评估表达式程序在处理用户输入时遇到问题

Posted

技术标签:

【中文标题】评估表达式程序在处理用户输入时遇到问题【英文标题】: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并退出程序。 【参考方案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] 替换表达式,但我确信这是错误的做法。抱歉,我对此还是很陌生。

以上是关于评估表达式程序在处理用户输入时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章

你是如何解决的的?我也遇到了您的 Microsoft Visual Studio 评估期已过。这样的问题!

JDI 线程评估遇到问题

为啥 Safari Mobile 在 iOS 8 上处理许多输入字段时遇到问题

写脚本遇到的问题

无法评估选定的表达式? - Eclipse 库调试错误

使用多态性的表达式评估和树行走? (阿拉史蒂夫耶格)