正整数加减乘除四则混合运算求值方法 java实现

条件限定:
1、 输入的四则运算式由'+','-','*','/'运算符及正整数组成;
2、 无需考虑特殊字符、表达式语法错误及除不尽的情况;
3、 无需考虑运算符的优先级,加减乘除优先级一样,仅按照自左至右的顺序依次计算;
4、 计算的中间数据及最终结果都不会超过65535;
5、 当遇到除数为0时,即刻返回当前已计算结果。

例:输入:2+1*4-2/5            输出:2

import java.util.Scanner;
public class FourOperation {
<span style="white-space:pre">	</span>public static void main(String[] args) {
<span style="white-space:pre">	</span>    Scanner in=new Scanner(System.in);
<span style="white-space:pre">	</span>    System.out.println("请输入字符串:");
<span style="white-space:pre">	</span>    String s=in.nextLine();
<span style="white-space:pre">	</span>    String regex="\\p{Punct}";
<span style="white-space:pre">	</span>    String[] digitWord=s.split(regex) ;
<span style="white-space:pre">	</span>    int[] digit=new int[digitWord.length];
<span style="white-space:pre">	</span>    for(int i=0;i<digitWord.length;i++){
<span style="white-space:pre">	</span>    <span style="white-space:pre">	</span>try{
<span style="white-space:pre">	</span>    <span style="white-space:pre">		</span>digit[i]=Integer.parseInt(digitWord[i]);
<span style="white-space:pre">	</span>    <span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>    <span style="white-space:pre">	</span>catch(NumberFormatException e){
<span style="white-space:pre">	</span>    <span style="white-space:pre">		</span>System.out.println("除了标点符号外还有非数字字符");
<span style="white-space:pre">	</span>    <span style="white-space:pre">		</span>System.exit(0);
<span style="white-space:pre">	</span>    <span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>    }
<span style="white-space:pre">	</span>    <span style="white-space:pre">	</span>
        char[]c=s.toCharArray();
<span style="white-space:pre">	</span>    int result=digit[0];
<span style="white-space:pre">	</span>   // System.out.println(c);
        int j=1;//与下一个数字做运算
<span style="white-space:pre">	</span>    for (int i=0; i<c.length; i++)//遍历每个算术符号
<span style="white-space:pre">	</span>     {    
<span style="white-space:pre">			</span> switch (c[i]) 
<span style="white-space:pre">			</span> {    
<span style="white-space:pre">				</span>case'+': result+=digit[j]; j++;break;          
<span style="white-space:pre">				</span>case'-': result-=digit[j]; j++;break;            
<span style="white-space:pre">				</span>case'*': result=result*digit[j]; j++;break;             
<span style="white-space:pre">				</span>case'/':                 
<span style="white-space:pre">					</span>if(digit[j]=='0') 
<span style="white-space:pre">					</span>{                    
<span style="white-space:pre">						</span>System.out.println("结果为: "+ result);
<span style="white-space:pre">						</span>System.exit(0);
<span style="white-space:pre">						</span>                
<span style="white-space:pre">					</span>}                
<span style="white-space:pre">					</span>result=result/digit[j]; j++;break;            
<span style="white-space:pre">				</span>default: break;         
<span style="white-space:pre">			</span>}    
<span style="white-space:pre">		</span>}    
<span style="white-space:pre">	</span>    System.out.println("结果为: "+ result);  
<span style="white-space:pre">	</span>}
}

有错误或者改进意见请留言。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值