加减乘除运算(Java)实际上这相当于javascript的eval方法,以下是该方法的java实现:
//Eval.java
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
public class Eval {
public int eval(String exp){
ListString list = infixExpToPostExp(exp);//转化成后缀表达式
return doEval(list);//真正求值
}
//遇到操作符压栈,遇到表达式从后缀表达式中弹出两个数,计算出结果,压入堆栈
private int doEval(ListString list) {
StackString stack =new StackString();
String element;
int n1,n2,result;
try{
for(int i = 0; ilist.size();i){
element = list.get(i);
if(isOperator(element)){
n1 = Integer.parseInt(stack.pop());
n2 = Integer.parseInt(stack.pop());
result = doOperate(n1,n2,element);
stack.push(new Integer(result).toString());
}else{
stack.push(element);
}
}
return Integer.parseInt(stack.pop());
}catch(RuntimeException e){
throw new IllegalExpressionException(e.getMessage());
}
}
private int doOperate(int n1, int n2, String operator) {
if(operator.equals(" "))
return n1n2;
else if(operator.equals("-"))
return n1 - n2;
else if(operator.equals("*"))
return n1 * n2;
else
return n1 / n2;
}
private boolean isOperator(String str){
return str.equals(" ") || str.equals("-") || str.equals("*") || str.equals("/");
}
private ListString infixExpToPostExp(String exp){//将中缀表达式转化成为后缀表达式
ListString postExp = new ArrayListString();//存放转化的后缀表达式的链表
StringBuffer numBuffer = new StringBuffer();//用来保存一个数的
StackCharacter opStack = new StackCharacter();//操作符栈
char ch,preChar;
opStack.push('#');
try{
for(int i = 0; iexp.length();){
ch = exp.charAt(i);
switch(ch){
case ' ':
case '-':
case '*':
case '/':
preChar = opStack.peek();
//如果栈里面的操作符优先级比当前的大,则把栈中优先级大的都添加到后缀表达式列表中
while(priority(preChar) = priority(ch)){
postExp.add("" preChar);
opStack.pop();
preChar = opStack.peek();
}
opStack.push(ch);
i;
break;
case '(':
//左括号直接压栈
opStack.push(ch);
i;
break;
case ')':
//右括号则直接把栈中左括号前面的弹出,并加入后缀表达式链表中
char c = opStack.pop();
while(c != '('){
postExp.add(""c);
c = opStack.pop();
}
i;
break;
//#号,代表表达式结束,可以直接把操作符栈中剩余的操作符全部弹出,并加入后缀表达式链表中
case '#':
char c1;
while(!opStack.isEmpty()){
c1 = opStack.pop();
if(c1 != '#')
postExp.add(""c1);
}
i;
break;
//过滤空白符
case ' ':
case '\t':
i;
break;
//数字则凑成一个整数,加入后缀表达式链表中
default:
if(Character.isDigit(ch)){
while(Character.isDigit(ch)){
numBuffer.append(ch);
ch = exp.charAt(i);
}
postExp.add(numBuffer.toString());
numBuffer = new StringBuffer();
}else{
throw new IllegalExpressionException("illegal operator");
}
}
}
}catch(RuntimeException e){
throw new IllegalExpressionException(e.getMessage());
【java加减乘除代码数组 java加减乘除math】}
return postExp;
}
private int priority(char op){//定义优先级
switch(op){
case' ':
case'-':
return 1;
case'*':
case'/':
return 2;
case'(':
case'#':
return 0;
}
throw new IllegalExpressionException("Illegal operator");
}
}
Main.java 主函数所在类
public class Main
{
public static void main(String[] args) {
try {
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
String exp=br.readLine();
int result = eval.eval(exp);
System.out.println(result);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
IllegalExpressionException异常类
public class IllegalExpressionException extends RuntimeException{
public IllegalExpressionException(){
}
public IllegalExpressionException(String info){
super(info);
}
}
java数组元素如何进行加减乘除,请大侠咪赐教?。?/h2>都是一维数组 。
计算数组的和用一个循环就可以了 。
public int getdata(String x,int [] a){
int c=0;
if("加".equals(x)){
for(i=0;ia.length;i){
c =a[i];
}
}
else if("乘".equals(x)){
for(i=0;ia.length;i){
c=c*a[i];
}
}
return c;
}
public static void main(String args[]){
int [] a={1,2,3,4,5,6,7,8,9,0};
int [] b={1,2,3,4,5,6,7,8,9,0};
//问题1
int c=0;
c=getdata("加",a);
int d=0;
d=getdata("加",b);
//问题2
c/d;
//问题3
getdata("乘",a)*getdata("乘",a)/d;
}
随便写了下 不知道楼主看懂没
怎么用java编程,实现分数的加减乘除运算?java编程实现分数的加减乘除运算的步骤如下:
1、打开eclipse,创建一个Java工程,在此工程里新建一个类;
2、在新建的类中,添加4个运算类;
3、在主方法中调用对应的方法即可完成分数的加减乘除运算了 。
具体实现代码如下:
public class Demo {
public static void main(String[] args) {
System.out.println(jia(1, 2));
System.out.println(jian(1, 2));
System.out.println(cheng(1, 2));
System.out.println(chu(1, 2));
}
//加法运算
private static float jia(float x,float y) {
return xy;
}
//减法运算
private static float jian(float x,float y) {
return x - y;
}
//乘法运算
private static float cheng(float x,float y) {
return x * y;
}
//除法运算
private static float chu(float x,float y) {
return x / y;
}
}
Java实现两个无限大的数的加减乘除运算根据你的要求 , 我写了一下代码,如下:package com.fer2005.test;public class AddUtil { /**
* @param a1 大数字1,按数组存储
* @param a2 大数字2,按数组存储
* @return 返回结果数组
*/
public int[] getResult(int[] a1,int[] a2){
//取最大的长度作为返回结果的长度,此时未考虑是否有进位
int length=a1.lengtha2.length?a1.length:a2.length;
//新建未考虑进位的数组结果
int[] tmp_res =new int[length];
int i=0;
//循环相加得到res的按照最短数组相加的结果
while(ia1.lengthia2.length){
i;
tmp_res[length-i]=a1[a1.length-i] a2[a2.length-i];
}
//操作完成后 , 需将长数组的值赋给res
//a1的长度说明a1比a2长度小,res需要获取a2的前几位
if(a1.lengtha2.length){
while(length-i0){
tmp_res[length-i-1]=a2[a2.length-i-1];
i;
}
}else if(a1.lengtha2.length){
//说明a2比a1长度?。瑀es需要获取a1的前几位
while(length-i0){
tmp_res[length-i-1]=a1[a1.length-i-1];
i;
}
}//考虑进位问题 , 如果某一元素大于10 , 则本身减10 , 前一元素加1,如果第一个元素大于10,特殊处理 。
//需处理相加之和大于10的情况
for(int k=tmp_res.length-1;k0;k--){
if(tmp_res[k]=10){
tmp_res[k-1]=tmp_res[k-1] 1;
tmp_res[k]=tmp_res[k]-10;
}
}
int[] res=new int[length 1];
//首位情况特殊处理
if(tmp_res[0]=10){
res[0]=1;
res[1]=tmp_res[0]-10;
for(int m=1;mtmp_res.length;m){
res[m 1]=tmp_res[m];
}else{res=tmp_res;}
}
return res;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
AddUtil addUtil = new AddUtil();
int[] a1= {9,2,3,8,5};
int[] a2={1,9,2,3,9};
for(int j:addUtil.getResult(a1, a2)){
System.out.print(j ",");
}
}}
关于java加减乘除代码数组和java加减乘除math的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- 怎么避免插入硬盘电脑重启,如何不让硬盘自检
- html5中bgm是什么意思,html 背景音乐
- 电脑直播快手黑屏,电脑快手直播为啥黑屏
- 包含python相关函数使用的词条
- flutter透明导航栏,flutter顶部导航栏
- 类似武侠养成小游戏推荐的简单介绍
- 牡丹江医院如何申请引流,牡丹江第一医院app
- 连接不上数据库原因php php连接不上mysql
- python中a1102,PYTHON下载