packagesum2;importjava.util.Scanner;//由于先前的实验固定了数据的个数,然而根据第二次试验的要求需要重新进行修改//所以决定重新建立一个新的项目//时间:2017 3 8//随风的叶子//加减乘除程序代码
public classsum2 {//记录运算符个数
static intm;//建立动态数组:操作数
static int[][]n1;//设置成运算式:数据源
static int[][]n2;//结果设置成int型的
static int[]S;//记录用算过程的数组
static int[]s;//运算符的选择
static String[]r1={"+","-","*","÷"};//运算符的操作:操作符
staticString[]R;//运算符的存储:数据源
staticString[]R1;//括号的存储
static char[]r2={'(',')'};static char[]r3;public static voidmain(String[] args) {//随机生成数组
System.out.println("功能1:请输入定制数量:");
Scanner scan1=newScanner(System.in);int sum2=scan1.nextInt();
System.out.println("功能2:请输入操作数个数:");
Scanner scan2=newScanner(System.in);int sum1=scan2.nextInt();
System.out.println("功能3:是否需要括号:0 是 1否");
Scanner scan3=newScanner(System.in);int sum3=scan3.nextInt();
n1=new int[sum2][sum1];
n2=new int[sum2][sum1];
S=new int[sum2];
s=new int[sum1];
R=newString[sum1];
R1=newString[sum1];
r3=new char[sum1*2];for(int i=0;i
{
r3[i]=' ';
}for(int i=0;i
{for(int j=0;j
{
n1[i][j]=(int)(1+Math.random()*100);
n2[i][j]=n1[i][j];
}
}for(int i=0;i
{int number=0;int num2=0;int num3=0;if(sum3==0)
{
num2=2 + 2*(int)(Math.random()*(sum1*2-6)/2);//2 4 6
num3=num2 +3 + 2*(int)(Math.random()*(sum1*2-2-num2)/2);//5 7 9
r3[num2]='(';
r3[num3]=')';
}int jishu=0;//设置运算符
for(int j1=0;j1
{int num=(int)(0 + Math.random()*4);//运算符的设置
R[j1]=newString(r1[num]);
R1[j1]=newString(r1[num]);
}//括号内的算法
num2=num2/2;//左括号的位置
num3=num3/2;//右括号的位置
m=sum1-1;//num2=num3时 括号消掉
while(num2
{//括号的乘除法
for(int k=num2;k
{if(R[k].equals("*"))
{
number=n1[i][k]*n1[i][k+1];
n1[i][k]=number;//System.out.print(number+" ");
for(int j1=k;j1
{
R[j1]=R[j1+1];
n1[i][j1+1]=n1[i][j1+2];
}
R[m-1]="+";
m--;
k--;
num3--;
}//乘法截至
else if(R[k].equals("÷"))
{
number=n1[i][k]/n1[i][k+1];
n1[i][k]=number;//处理括号内除数为0的情况
if(number==0)
{if(R[k-1].equals("÷"))
{
n1[i][k+1]=n2[i][k];
n2[i][k+1]=n1[i][k+1];
number=n1[i][k]/n1[i][k+1];
n1[i][k]=number;
}
}//System.out.print(number+" ");
for(int j1=k;j1
{
R[j1]=R[j1+1];
n1[i][j1+1]=n1[i][j1+2];
}
R[m-1]="+";
m--;
k--;
num3--;
}//除法截至
}//乘除循环截至//括号的加减法
for(int k=num2;k
{if(R[k].equals("+"))
{
number=n1[i][k]+n1[i][k+1];
n1[i][k]=number;//System.out.print(number+" ");
for(int j1=k;j1
{
R[j1]=R[j1+1];
n1[i][j1+1]=n1[i][j1+2];
}
R[m-1]="+";
m--;
k--;
num3--;
}//加法截至
else if(R[k].equals("-"))
{
number=n1[i][k]-n1[i][k+1];
n1[i][k]=number;//处理括号内减法为0的情况
if(number==0)
{if(R[k-1].equals("÷"))
{
n1[i][k+1]=n2[i][k]+(int)(1+Math.random()*5);
n2[i][k+1]=n1[i][k+1];
number=n1[i][k]/n1[i][k+1];
n1[i][k]=number;
}
}//System.out.print(number+" ");
for(int j1=k;j1
{
R[j1]=R[j1+1];
n1[i][j1+1]=n1[i][j1+2];
}
R[m-1]="+";
m--;
k--;
num3--;
}//减法截止//System.out.print(number+" ");
}//加减循环止
}//括号内算法循环止//乘除法的运算
for(int k=0;k
{//如果加入乘法//进行插入
if(R[k].equals("*"))
{
number=n1[i][k]*n1[i][k+1];
n1[i][k]=number;//System.out.print(number+" ");
for(int j1=k;j1
{
R[j1]=R[j1+1];
n1[i][j1+1]=n1[i][j1+2];
}
R[m-1]="+";
m--;
k--;
}else if(R[k].equals("÷"))
{
number=n1[i][k]/n1[i][k+1];
n1[i][k]=number;//System.out.print(number+" ");
for(int j1=k;j1
{
R[j1]=R[j1+1];
n1[i][j1+1]=n1[i][j1+2];
}
R[m-1]="+";
m--;
k--;
}
}//加减法的运算
for(int k=0;k
{if(R[k].equals("+"))
{
number=n1[i][k]+n1[i][k+1];
n1[i][k+1]=number;
}else if(R[k].equals("-"))
{
number=n1[i][k]-n1[i][k+1];
n1[i][k+1]=number;
}//System.out.print(number+" ");
}//运算式的输出
for(int j=0;j
{
System.out.print(r3[jishu]);
jishu++;
System.out.print(n2[i][j]);
System.out.print(r3[jishu]);
jishu++;if(j
{
System.out.print(R1[j]);
}elseSystem.out.print("=");
}//输出结果
System.out.print(number);
System.out.println();//清空括号
for(int i1=0;i1
{
r3[i1]=' ';
}
}//一行运算截至
}//main
}//class