评估表达式程序在处理用户输入时遇到问题
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 评估期已过。这样的问题!