📄 console.java
字号:
/**
* Console - JEP Example Applet
* Copyright (c) 2000 Nathan Funk
*
* @author Nathan Funk
*/
package org.nfunk.jepexamples;
import java.io.*;
import org.nfunk.jep.JEP;
//import org.nfunk.sovler.*;
/**
* This class implements a simple command line utility for evaluating
* mathematical expressions.
*
* Usage: java org.nfunk.jepexamples.Console [expression]
*
* If an argument is passed, it is interpreted as an expression
* and evaluated. Otherwise, a prompt is printed, and the user can enter
* expressions to be evaluated. To exit from the command prompt a 'q' must
* be entered.
*/
class Console {
/** The prompt string */
private String prompt;
/** The input reader */
private BufferedReader br;
/** Constructor */
public Console() {
prompt = "JEP > ";
br = new BufferedReader(new InputStreamReader(System.in));
}
/** Creates a new Console object and calls run() */
public static void main(String args[]) throws IOException {
Console c = new Console();
c.run(args);
}
/** The input loop */
public void run(String args[]) throws IOException {
String command="";
JEP j = new JEP();
j.addStandardConstants();
j.addStandardFunctions();
j.addComplex();
//j.setTraverse(true);
if (args.length>0) {
// evaluate the expression passed as arguments
String temp = args[0];
for (int i=1; i<args.length; i++) temp += " " + args[i];
j.parseExpression(temp);
if (j.hasError())
System.out.println(j.getErrorInfo());
else
System.out.println(j.getValueAsObject());
} else {
// no arguments - interactive mode
System.out.println("JEP - Enter q to quit");
System.out.print(prompt);
while ((command = getCommand()) != null) {
j.parseExpression(command);
if (j.hasError()) {
System.out.println(j.getErrorInfo());
} else {
// expression is OK, get the value
Object value = j.getValueAsObject();
// did error occur during evaluation?
if (j.hasError()) {
System.out.println(j.getErrorInfo());
} else {
System.out.println(value);
}
/*
System.out.println(
(LinearVisitor.isLinear(j.getTopNode())) ?
"Linear" : "Not Linear");
System.out.println(
(ConstantVisitor.isConstant(j.getTopNode())) ?
"Constant" : "Not Constant");
*/
}
System.out.print(prompt);
}
}
}
/**
* Get a command from the input.
* @return null if an error occures, or if the user enters a terminating
* command
*/
private String getCommand() throws IOException {
String s;
if (br == null)
return null;
if ( (s = br.readLine()) == null)
return null;
if (s.equals("q")
|| s.equals("quit")
|| s.equals("exit"))
return null;
return s;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -