java实现简单的四则运算

相信许多刚开始接触java的人,在开始的时候写程序的时候都有思路上的不清晰,代码如何写,我也是才开始学没多久,觉得这个题对理解java基础知识和对API的用法上有帮助,希望你们能喜欢。

题目:简单的四则混合运算

从控制台输入,然后打印出结果

例如

思路:首先我们知道输入的是字符串,里面有乘除加减符号和数字,我们肯定要把里面的数字换成Double 类型的数字才能进行运算,然后还要按照运算法则先乘除后加减。

首先我们先把乘除的结果算出来

代码如下:

import java.util.Arrays;
import java.util.Scanner;

import org.junit.Test;

public class Oper1 {
	@Test
	public void testOperation(){
		Scanner sc = new Scanner(System.in);
		//为了方便测试,没有用Scanner,用的话应该String s = sc.next();就能从控制台输入内容
		String s ="10-2*2/2+4+3*4/4+1";
		//将加号替换成减号,不能用减号替换加号,因为正则表达式的原因,这里就不多赘述
		String s1 =s.replace("+","-");
		//分割字符然后放进数组
		String[] str = s1.split("-");
		//这里初始化加减结果
		double total1=0;
		//这里是查看切割后的结果,我们来看下结果:[10, 2*2/2, 4, 3*4/4, 1],截取出来就是这个样子。
		System.out.println(Arrays.toString(str));
		//然后我们来操作数组,把里面的乘除结果算出来,先遍历数组
		for(String str1:str){
			System.out.print(str1);
			//判断是否含有乘或除
			if(str1.contains("*")||str1.contains("/")){
				//乘除结果
				double total = 0;
				//将有乘或除的字符串遍历
				for(int i =0;i<str1.length();){
					//截取字符串的变化长度
					int count =1;
					//遍历后面的每一个字符
					a:for(int j =i+1;j<str1.length();j++){
						//截取字符
						char c =str1.charAt(j);
						//判断是否是乘或除
						if(c=='*'||c=='/'){
							break a;
						}else{
							count++;
						}
					}
					
					//将数字截取出来
					String s2 =str1.substring(i,i+count);
					//转为小数
					double d = Double.parseDouble(s2);
					if(i==0){
						//将第一个数变为初始值
						total = d;
					}else{
						char c1 = str1.charAt(i-1);
						//判断数字前面的是乘或是除,然后分别乘除
						if(c1=='*'){
							total*=d;
						}else if(c1=='/'){
							total/=d;
						}
					}
					//最后将计数器的累加条件改变
					i+=count+1;
				}
				System.out.println(total);
				//将结果替换到原来的字符串里
				s= s.replace(str1, total+"");
				System.out.println(s);
			}
		}
		//进行加减运算
		System.out.println(s);
		for(int i =0;i<s.length();i++){
			int count =1;
			a:for(int j=i+1;j<s.length();j++){
				char c = s.charAt(j);
				if(c=='+'||c=='-'){
					break a;
				}else{
					count++;
				}
			}
			String s3= s.substring(i,i+count);
			System.out.println(s3);
			double d2 = Double.parseDouble(s3);
			if(i==0){
				total1 = d2;
			}else{
				char c = s.charAt(i-1);
				if(c=='+'){
					total1+=d2;
				}else if(c=='-'){
					total1-=d2;
				}
			}
			i+=count;
		}
		System.out.println(total1);
		
	}
}
下面没注释的是跟计算乘除一样,计算加减法

 

  • 6
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值