⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 l1.java

📁 刚开始学JAVA的时候编的一个四则运算程序
💻 JAVA
字号:
import java.io.*;
public class l1 {

	/**
	 * @param args
	 */
	public static void main(String[] args)throws IOException {
		// TODO Auto-generated method stub
		BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
		do{
			System.out.println("请输入四则运算表达式或输入exit");
			/*判断是否退出*/
			String s=in.readLine();
			s=s.trim();
			if(s.equals("")){
				continue;
			}
			else{
				if(s.equals("exit")){
					break;
				}
			}
			/*保存到数组中*/
			char s1[]=s.toCharArray();
			float ss[]=new float[s.length()];
			for(int i=0;i<s.length();i++){
				ss[i]=(float)s1[i];
			}
			/*检查表达式是否正确*/
			boolean flag=false;              //用来判断是否有错误,false为没有错误,true为有错误
			float x[]=new float[100];
			int op[]=new int[100];
			int j=0;
			if(ss[0]<48||ss[0]>57){
				flag=true;
				System.out.println("第一个字符不是数字,表达式不正确");
			}
			else{
				int i=0;
				boolean dot=false; //用来判断是否有小数点,有为true,没有为false
				float n=0.1f;
				while(i<s.length()){
					if(!dot&&ss[i]>=48&&ss[i]<=57){
						x[j]=10*x[j]+(ss[i]-48);
					}
					else{
						if(ss[i]==46){	
							dot=true;
							if(i==s.length()-1){
								flag=true;
								System.out.println("不能以小数点结尾");
							}
							else{
								if(ss[i+1]<48||ss[i+1]>57){
									flag=true;
									System.out.println("小数点后没有数");
								}
							}
						}
						else{
							if(dot&&ss[i]>=48&&ss[i]<=57){
								x[j]=x[j]+n*(ss[i]-48);
								n=n*0.1f;
							}
							else{
								if(ss[i]==43||ss[i]==45||ss[i]==42||ss[i]==47){
									if(i==s.length()-1){
										op[j]=(int)ss[i];
										flag=true;
										System.out.println("不能以运算符结尾!");
									}
									else{
										if(ss[i+1]==43||ss[i+1]==45||ss[i+1]==42||ss[i+1]==47){
											flag=true;
											System.out.println("运算符重复");
										}
										else{
											dot=false;
											n=0.1f;          //一个浮点型数结束,小数点赋初值
											op[j]=(int)ss[i];
											j++;
										}
									}
								}
								else{
									flag=true;
									System.out.println((char)ss[i]+"不是四则表达式运算符");
								}
							}
						}
					}
					i++;
				}
				if(op[0]==0){
					flag=true;
					System.out.println("没有运算符");
				}
			}
			/*计算,分三种情况:当前判断的运算符为+或-,下一个也为+或-;当前判断的运算符为+或-,下一个为*或/;当前判断的运算符为*或/*/
			float z=x[0];    //结果保存为浮点型
			if(!flag){
				int g=0;
				while(g!=j){
					/*如果当前运算符为+或-,下一个也为+或-或没有其它运算符,顺次计算。*/
					if((op[g]==43||op[g]==45)&&(op[g+1]==43||op[g+1]==45||op[g+1]==0)){
						if(op[g]==43){
							z=z+x[g+1];
						}
						if(op[g]==45){
							z=z-x[g+1];
						}
						g++;
					}
					/*如果当前运算符为+或-,下一个为*或/,则先算*或/。*/
					if((op[g]==43||op[g]==45)&&(op[g+1]==42||op[g+1]==47)){
						int h=g+1;
						float temp=x[h];
						while(op[h]==42||op[h]==47){       //如果还是*或/,继续计算*或/,保存到temp,直到不是为至
							if(op[h]==42){
								temp=temp*x[h+1];
							}
							if(op[h]==47){
								temp=temp/x[h+1];
							}
							h++;
						}
						/* *或/的结果和之前的数做*或-运算 */
						if(op[g]==43){
							z=z+temp;
						}
						if(op[g]==45){
							z=z-temp;
						}
						g=h;
					}
					/*如果当前运算为*或/,计算*/
					if(op[g]==42||op[g]==47){
						if(op[g]==42){
							z=z*x[g+1];
						}
						if(op[g]==47){
							z=z/x[g+1];
						}
						g++;					
					}
					
				}
				System.out.println("你输入的表达式的值为"+z);
			}
			
		}while(true);
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -