软件工程概论作业二
设计思想:这次代码主要实现括号的添加、除法是否有余、加减出现负数、有无乘除法等要求,在括号上实现一对括号的随意位置添加,实现时随机查找位置(满足至少括住两个运算数),加减负数是运算数可能出现负数的情况,将这几个条件写成函数,在if else判断语句中分别按照情况调用对应的函数即可,最后输出的时候,因为情况比较多,将show函数带上参数来反应是否有负数,是否有括号的问题,在分别写出对应的输出语句,最后在main函数中调用即可
程序源代码:
package Shi;
import java.util.*;
public class Shi {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("输入范围");
int fanwei=input.nextInt();
System.out.println("输入个数");
int ee=input.nextInt();
System.out.println("输入式子运算数个数");
int nn=input.nextInt();
System.out.println("是否有乘除法:1、有2、没有");
int e1=input.nextInt();
System.out.println("是否有括号:1、有2、没有");
int e2=input.nextInt();
System.out.println("是否有加减负数:1、有2、没有");
int e3=input.nextInt();
Zhengshu aa[]=new Zhengshu[ee];
if(e1==2){
for(int i=0;i<ee;i++){
aa[i]=new Zhengshu();
aa[i].setn(nn);
aa[i].setfan(fanwei);
aa[i].wuchengchu();
aa[i].show(e3,e2);
}
}
else{
for(int i=0;i<ee;i++){
aa[i]=new Zhengshu();
aa[i].setn(nn);
aa[i].setfan(fanwei);
aa[i].youchengchu(2);
aa[i].show(e3,e2);
}
}
input.close();
}
}
class Zhengshu{
int f[];
int a[];
int n;
int fan;
public Zhengshu(){}
public void setfan(int aa){fan=aa;}
public void setn(int aa){n=aa;a=new int[n];f=new int[n-1];}
public void wuchengchu(){
for(int i=0;i<n;i++){
a[i]=(int)(Math.random()*fan);
}
for(int i=0;i<n-1;i++){
f[i]=(int)(Math.random()*2+1);
}
}
public void youchengchu(int a1){
for(int i=0;i<n;i++){
a[i]=(int)(Math.random()*fan);
}
for(int i=0;i<n-1;i++){
f[i]=(int)(Math.random()*4+1);
}
if(a1==2){
for(int i=0;i<n-1;i++){
while(a[i+1]==0){
a[i+1]=(int)(Math.random()*fan);
}
if(f[i]==4&&(a[i]%a[i+1])!=0)
youchengchu(a1);}
}
}
public void suiji(int n1,int n2){
n1=(int)(Math.random()*(n-1));
n2=(int)(Math.random()*(n-1)+2);
while(n2<n1+2){
n2=(int)(Math.random()*(n-1)+2);
}
}
public int fuhao(){
int w1=(int)(Math.random()*(n-1));
while((w1==0&&(f[0]==3||f[0]==4))||
(w1==n-2&&(f[n-2]==3||f[n-2]==4))
// ||
// ((w1!=0||w1!=n-2)&&
// (!((f[w1-1]==1||f[w1-1]==2))&&(f[w1]==1||f[w1]==2)))
)
{w1=(int)(Math.random()*(n-1));}
return w1;
}
public void daifuhao(){
int n=fuhao();
a[n]=-a[n];
}
public String zhuan(int a){
if(a==1){return "+";}
else if(a==2){return "-";}
else if(a==3){return "*";}
else {return "/";}
}
public void show(int a2,int a3){
if(a2==1&&a3==1){
daifuhao();
int m1=0,m2=0;
this.suiji(m1,m2);
m1=(int)(Math.random()*(n-1));
m2=(int)(Math.random()*(n-1)+2);
while(m2<m1+2){
m2=(int)(Math.random()*(n-1)+2);
}
for(int i=0;i<m1;i++){
System.out.print(a[i]+zhuan(f[i]));
}
System.out.print("(");
for(int i=m1;i<m2-1;i++){
System.out.print(a[i]+zhuan(f[i]));
}
System.out.print(a[m2-1]);
System.out.print(")");
if(m2-1<n-1)System.out.print(zhuan(f[m2-1]));
for(int i=m2;i<n-1;i++){
System.out.print(a[i]+zhuan(f[i]));
}
if(m2!=n)System.out.print(a[n-1]);
}
else if(a2==1&&a3==2){
daifuhao();
for(int i=0;i<n-1;i++){
System.out.print(a[i]+zhuan(f[i]));
}
System.out.print(a[n-1]);
}
else if(a2==2&&a3==1){
int m1=0,m2=0;
this.suiji(m1,m2);
m1=(int)(Math.random()*(n-1));
m2=(int)(Math.random()*(n-1)+2);
while(m2<m1+2){
m2=(int)(Math.random()*(n-1)+2);
}
for(int i=0;i<m1;i++){
System.out.print(a[i]+zhuan(f[i]));
}
System.out.print("(");
for(int i=m1;i<m2-1;i++){
System.out.print(a[i]+zhuan(f[i]));
}
System.out.print(a[m2-1]);
System.out.print(")");
if(m2-1<n-1)System.out.print(zhuan(f[m2-1]));
for(int i=m2;i<n-1;i++){
System.out.print(a[i]+zhuan(f[i]));
}
if(m2!=n)System.out.print(a[n-1]);
}
else{
for(int i=0;i<n-1;i++){
System.out.print(a[i]+zhuan(f[i]));
}
System.out.print(a[n-1]);
}
System.out.println("=");
}
}
结果截图: