四则运算
来源:互联网 发布:电信网通网络转换器 编辑:程序博客网 时间:2024/04/29 07:45
四则运算(10分)
题目内容:
你的程序要读入一个整数四则运算的式子,其中的整数均为非负整数且小于10000,其中的运算符只有加减乘除(+-/)四种。你的程序要计算这个式子,并输出结果。计算过程必须遵守优先级,即/要在+-之前先计算。当遇到除法时,按照Java语言的整数除法的方式来计算,即只留下整数的结果。
提示:一种可能的做法是,将整个式子作为字符串读入,然后找出其中最后一个+或-,在此位置将其截成两段,分别计算后再做+或-,以此类推。
另,用Integer.parseInt(s)可以从一个字符串得到整数。
输入格式:
输入时,所有的成分均没有有空格隔开,即每个运算符前后都没有空格。注意,单个数字也是可能的一种输入。
输出格式:
输出结果的整数。
输入样例:
2+3*4-6/3
输出样例:
12
import java.util.Scanner;public class Main { public static int find(String ch,int p)//找到乘除的位置 { p++; if(ch.indexOf('*',p)==-1) { p=ch.indexOf('/',p); return p; } if(ch.indexOf('/',p)==-1) { p=ch.indexOf('*',p); return p; } if(ch.indexOf('*',p)!=-1 && ch.indexOf('/',p)!=-1) { if(ch.indexOf('*',p) > ch.indexOf('/',p) ) { p=ch.indexOf('/',p); } if(ch.indexOf('*',p) < ch.indexOf('/',p)) { p=ch.indexOf('*',p); } } else if(ch.indexOf('*',p)==-1 && ch.indexOf('/',p)==-1) { p=-1; } return p; } public static int md(String ch) { int a,b,n1=1; if(ch.charAt(0)=='-' || ch.charAt(0)=='+') { if(ch.charAt(0)=='-') { n1=-1; } ch=ch.substring(1); } String c; a=find(ch,0); b=find(ch,a); if(a!=-1) { c=ch.substring(0,a); n1*=Integer.parseInt(c); while(a!=-1) { if(ch.charAt(a)=='*') { if(b==-1) { n1=n1*Integer.parseInt(ch.substring(a+1)); break; } if(b!=-1) { n1=n1*Integer.parseInt(ch.substring(a+1, b)); } } if(ch.charAt(a)=='/') { if(b==-1) { n1=n1/Integer.parseInt(ch.substring(a+1)); break; } if(b!=-1) { n1=n1/Integer.parseInt(ch.substring(a+1, b)); } } a=b; b=find(ch,b); } } else { c=ch.substring(0); n1*=Integer.parseInt(c); } return n1; } public static String divide(String str) { String ch=str; int a,b; a=str.lastIndexOf('+'); b=str.lastIndexOf('-'); if(a > b)//加更靠后 { ch=str.substring(a); } else if(b > a) { ch=str.substring(b); } if(a==-1 && b==0) { int i; for(i=1; i<str.length() && str.charAt(i)!='+' && str.charAt(i)!='-';i++); ch=str.substring(0,i); } if(a==-1 && b==-1)// { int i; for(i=0; i<str.length() && str.charAt(i)!='+' && str.charAt(i)!='-';i++); ch=str.substring(0,i); } return ch; } public static String part(String str) { String ch=null; int a,b; a=str.lastIndexOf('+'); b=str.lastIndexOf('-'); if(a > b) { ch=str.substring(0, a); } if(b > a) { ch=str.substring(0, b); } if(a==-1 && b==0) { ch=null; } if(a==-1 && b==-1)// { ch=null; } return ch; } public static void main(String[] args) { // TODO Auto-generated method stub Scanner in=new Scanner(System.in); String str,ch,c,num1,num2; int i,j,sum=0,n1,n2,a,b; str = in.nextLine(); while(str!=null) { ch=divide(str); sum+=md(ch); str=part(str); } System.out.println(sum); }}
阅读全文
0 0
- 四则运算
- 四则运算
- 四则运算
- 四则运算
- 四则运算
- 四则运算
- 四则运算
- 四则运算
- 四则运算
- 四则运算
- 四则运算
- 四则运算
- 四则运算
- 四则运算
- 四则运算
- 四则运算
- 四则运算
- 四则运算
- 数学之美番外篇:平凡而又神奇的贝叶斯方法
- linux 开机启动流程
- 求质数算法的N种境界[1]
- 【HDU1492】The number of divisors(约数) about Humble Numbers
- 跑男特工 上门洗车 洗车加盟
- 四则运算
- UESTC
- Docker创建Docker Swarm集群节点
- MAVEN在eclipse中的配置
- 修改Tomcat端口号,变更失效或不起作用如何解决?
- CTF实验吧-who are you?【基于sleep盲注脚本】
- docker 插件开发案例
- RobotFramwork 使用input text时报错Parameters were incorrect. We wanted {"required":["value"]} and you……
- cordova battery-status插件