java表达式计算
1. java怎样把字符串表达式计算出来
可以使用 commons-jexl3 jar包
示例:
publicstaticvoidmain(String[]args){
StringexpressionString="1+2+3";
JexlEnginejexlEngine=newJexlBuilder().create();
JexlExpressionjexlExpression=jexlEngine.createExpression(expressionString);
Objectevaluate=jexlExpression.evaluate(null);
System.out.println(evaluate);
}
结果: 6
示例2:
来个复杂点的
publicstaticvoidmain(String[]args){
//StringexpressionString="1+2+3";
StringexpressionString="100*10-(200+300)";
JexlEnginejexlEngine=newJexlBuilder().create();
JexlExpressionjexlExpression=jexlEngine.createExpression(expressionString);
Objectevaluate=jexlExpression.evaluate(null);
System.out.println(evaluate);
}
结果: 500
2. 在Java中计算表达式a * 3 > 10 1 : 2的结果是
如果a*3大于10就返回冒号左边的也就是1 如果不大于10就返回冒号右边的2. 这种题推荐自己运行一遍!
3. 请问用Java编写一个 数学表达式计算程序
System.out.println("\t" + n + "! = " + compute(n));//调用compute方法,传入参数n
}
// 计算n!的方法
static long compute(int n) {
// 1!=1; 2!=2*1=2; 3!=3*2*1; 4!=4*3! ... n!=n*(n-1)!
// 递归: 方法本身含有对自己的调用
if (n == 1) {
return 1;
} else {
return n*compute(n-1);//20*compute(20-1)
}
}
4. 用java 正则表达式 计算一个字符串中某个子串的个数
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class RegexTest {
public static void main(String args[]){
String str = "abcdfdfsabcdfdsf abc fdfdabcabc";
//1. 用这则表达式处理, 不过好像一点都不省事..
Pattern p = Pattern.compile("abc",Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(str);
int count = 0;
while(m.find()){
count ++;
}
System.out.println("ABC的个数 : " + count);
//2. 用普通方法来做,比较省事
String [] ary = ("," + str + ",").split("abc");
System.out.println("ABC的个数 : " + (ary.length - 1));
}
}
我觉得用split方法,以"abc"做分隔符将字串拆分成数组,这样比较简单.不过上面的代码(第二种方法)只能判断小写"abc"的个数, 如果你还需要将"ABC"或者"aBc"或者"abC"这样的字串都找出来, 只需要将第二种方法的代码修改成下面这样的就可以了:
String [] ary = ("," + str.toLowerCase() + ",").split("abc");
System.out.println("ABC的个数 : " + (ary.length - 1));
5. JAVA中如何计算字符串表达式的结果,如:"2+8/2*6-12"。高手们过来看看。
在回答你的问题之前 做两个说明!
1. 你的输入要合法(不含字母,运算符后有且必须有数字,中间不能有空格)
import java.util.*;
import java.util.regex.*;
import java.lang.*;
public class CountExpression{
static String[] operater =new String[20];
static String[] number = new String[20];
public int countExpression(String str){
Stack countStack1 = new Stack();
Stack countStack2 = new Stack();
int result =0;
number = str.split("\\/|\\*|\\+|\\-");
operater= str.split("\\d+");
for(int i = 0; i<number.length;i++){
countStack1.push(number[i]);
if(i!=number.length-1){
countStack1.push(operater[i+1]);
}
}
while(!countStack1.isEmpty())
countStack2.push(countStack1.pop());
String op;
while(!countStack2.isEmpty()){
result=0;
op = countStack2.pop().toString();
if(op.equals("*")){
result=Integer.parseInt(countStack1.pop().toString())*Integer.parseInt(countStack2.pop().toString());
countStack1.push(result);
continue;
}
if(op.equals("/")){
result=Integer.parseInt(countStack1.pop().toString())/Integer.parseInt(countStack2.pop().toString());
countStack1.push(result);
continue;
}
countStack1.push(op);
}
while(!countStack1.isEmpty())
countStack2.push(countStack1.pop());
while(!countStack2.isEmpty()){
result=0;
op = countStack2.pop().toString();
if(op.equals("+")){
result=Integer.parseInt(countStack1.pop().toString())+Integer.parseInt(countStack2.pop().toString());
countStack1.push(result);
continue;
}
if(op.equals("-")){
result=Integer.parseInt(countStack1.pop().toString())-Integer.parseInt(countStack2.pop().toString());
countStack1.push(result);
continue;
}
countStack1.push(op);
}
return result;
//System.out.println(result);
}
public static void main(String[] args){
int num;
CountExpression ct= new CountExpression();
num = ct.countExpression("222+2*6*7-112*2+5*2-6*7");
System.out.println(num);
}
}
交给你个任务! 输入检查:像 2+/2*5+5-6, 2a+2/4+7 2*4-7/ 能提示输入错误
如果中间有空册删除
(提示用正则)
另外增加对括号的处理像 : 2*(2+3)/2
6. java三元表达式怎么算
举个简单例子吧。
int a=1;int b=2;int c= a>b?1:0,结果c 为0。a>b 为条件,后面当条件为true时返回":"前面的结果,反之返回":"后面的结果。
7. JAVA语言计算表达式的结果
没现成的程序,话说网络的积分没啥用,没人愿意为20分去给你写程序的。。
简单提示下吧
这个是
编译原理
的内容,两个简单的方法
1、
递推
下降分析器,就是LL分析
2、
算符
优先分析,就是LR分析的简化版
找代码的话,去看严蔚敏数据结构。。。上面有。。。是基于算符优先的,优先表都给出来了。。。
用LL的话,去找javacc吧,里面自带的例子就是你要的。。。
8. 怎么在JAVA中运算表达式
Java表达式是变量、常量、运算符、方法调用的序列,它执行指定的计算并返回某个确定的值。
其中,运算符按操作数的数目:有一元运算符(++、--)、二元运算符(+、-、>等等)和三元运算符(?:),它们分别对应一到三个操作数。
表达式一般按运算符来分:
算术表达式(float x=8.3f、i++)、
关系表达式(3>7、3<7)、
布尔逻辑表达式((5>4)&&true、!false)、
位运算表达式(a=34^3)、
赋值表达式、
条件表达式(b=100>89?a=ture:a=false)
以及复合表达式。
还有一种叫“表达式语句”,就是在表达式后加上分号作为语句来使用。(int i=123;)
9. 在java编程中表达式(11+3*8)/4%3的值是多少
java编程中表达式(11+3*8)/4%3的值为2。
计算的过程:
由于括号的优先级最高所以先进行括号里的运算,括号内乘法优先,所以3*8=24,然后加法得出24+11=35。然后35/4=8,然后进行对3取余的操作8%3=2,所以说最后得出整个表达式的结果为2。
(9)java表达式计算扩展阅读:
工作原理:
由四方面组成:Java编程语言、Java类文件格式、Java虚拟机、Java应用程序接口。
java语言特点:
简单性,Java看起来设计得很像C++,但是为了使语言小和容易熟悉,设计者们把C++语言中许多可用的特征去掉了,这些特征是一般程序员很少使用的。
面向对象Java是一个面向对象的语言。
分布性,Java设计成支持在网络上应用,它是分布式语言。
编译和解释性,Java编译程序生成字节码(byte-code),而不是通常的机器码。程序开发。这是一个与传统的、耗时的“编译、链接和测试”形成鲜明对比的精巧的开发过程。
稳健性,Java原来是用作编写消费类家用电子产品软件的语言,所以它是被设计成写高可靠和稳健软件的。Java消除了某些编程错误,使得用它写可靠软件相当容易。
安全性Java的存储分配模型是它防御恶意代码的主要方法之一。
可移植性Java使得语言声明不依赖于实现的方面。
高性能,Java是一种先编译后解释的语言,所以它不如全编译性语言快。
多线程性,Java是多线程语言,它提供支持多线程的执行(也称为轻便过程),能处理不同任务,使具有线索的程序设计很容易。
动态性Java语言设计成适应于变化的环境,它是一个动态的语言。
运算符优先级:+加、-减优先级小于*乘、/除、%取余数。结合的方向为自左向右。
参考资料来源:网络-Java