4.10学习总结

发布时间 2023-06-10 22:24:24作者: 听着DJ读童话

java自动计算(王建民必考)

 

//import java.util.random.*;
import java.util.Random;
import java.util.Scanner;

public class main {
Scanner S = new Scanner(System.in);
static Random random = new Random();

static int get_number() {
int a = (int)random.nextInt(99);
return a;
}

static int get_number(int a,int b) {
int c = (int)random.nextInt(b-a)+a;
return c;
}
static boolean yanzheng(int n,String end[]) {
for(int i=0;i<n-1;i++) {
for(int j=i+1;j<n;j++) {
if(end[i].equals(end[j])) {
return true;
}
}
}
return false;
}
static char get_char(int a) {
if(a < 25) {
return '+';
}
else if(a < 50) {
return '-';
}
else if(a < 75) {
return '*';
}
else
return '/';
}

static String dis_math(int a[],int b[],int c,int d,int C,int kuohao) {
int left=0,right=0;
int kuohao1=0,kuohao2=0;
String str="";
for(int i=0;i<a.length;i++) {
kuohao1 = get_number();
a[i] = get_number(c,d);
str=str+a[i];
if(i==a.length - 1) {
if(left>0&right==0) {
str = str+")";
}
break;
}
if(kuohao2>kuohao1&right==0&left>1) {
str=str+")";
right++;
}
if(C!=1&b[i]>50) {
b[i] =b[i]-50;
}
b[i] = get_number();
str=str+get_char(b[i]);
if(left>0) {
left++;
}
if(kuohao1>50&left==0&i<a.length-2) {
str=str+"(";
left++;
}
kuohao2 = get_number();
}
return str;
}
public static String chengchu(String str,char c) {
String k ="";
int a,b;
System.out.println("计算乘除:"+str);
a=Integer.parseInt(str.substring(0,str.indexOf(c)));
b=Integer.parseInt(str.substring(str.indexOf(c)+1));
if(c == '*')
a=a*b;
else if(c == '/') {
a=a/b;
}
k=k+a;
System.out.println("得到"+k);
return k;
}
public static String jiajian(String str,char c) {
String k ="",str1;
int a,b;
System.out.println("计算加减:"+str);
if(str.charAt(0)==c) {
str1=str.substring(1);
a=Integer.parseInt(str.substring(0,str1.indexOf(c)-11));
b=Integer.parseInt(str1.substring(str.indexOf(c)));
}
else {
a=Integer.parseInt(str.substring(0,str.indexOf(c)));
b=Integer.parseInt(str.substring(str.indexOf(c)+1));
}
if(c == '+')
a=a+b;
else if(c == '-') {
a=a-b;
}
k=k+a;
System.out.println("得到"+k);
return k;
}

public static String chai_chengchu(String str) {
System.out.println("我要开动咯!");
int a=0,b=0;
boolean T = true;
String str1=new String(),temp,str2=new String(),str3=new String();
System.out.println(str);
while(true) {
for(int j=0;j<str.length();j++) {
if(str.charAt(j)=='*'||str.charAt(j)=='/') {
T=false;
break;
}
}
if(T==true) {return str;}
for(int i=0;i<str.length();i++) {
if(str.charAt(i)=='*'||str.charAt(i)=='/') {
for(int j=i-1;j>=0;j--) {
if(str.charAt(j)=='+'||str.charAt(j)=='-') {
a=j;
break;
}
a=j-1;
}
for(int j=i+1;j<str.length();j++) {
if(str.charAt(j)=='+'||str.charAt(j)=='-'||str.charAt(j)=='*'||str.charAt(j)=='/') {
if(str.charAt(j-1)=='*'||str.charAt(j-1)=='/') {
b=j+1;
continue;
}
b=j;
break;
}
b=j+1;
}
str1=str.substring(a+1,b);
str2=str.substring(0,a+1);
str3=str.substring(b);
temp=chengchu(str1,str.charAt(i));
str=str2+temp+str3;
System.out.println("当前计算式"+str);
break;
}
}
//System.out.println("最终"+str);
//System.exit(1);
T=true;
str1="";
str2="";
str3="";
}
}
public static String jisuan(String str) {
boolean T=true;
int b = 0;
String str1=new String(),str2=new String(),str3="";
System.out.println("进入拆乘除:");
str1 = chai_chengchu(str);
System.out.println("拆乘除结束:");
System.out.println(str1+"进入全加减模式");
while(true) {
for(int j=0;j<str1.length();j++) {
if(str1.charAt(j)=='+'||str1.charAt(j)=='-') {
T=false;
break;
}
}
if(T==true) return str1;

for(int i=1;i<str1.length();i++) {
if(str1.charAt(i)=='+'||str1.charAt(i)=='-') {
for(int j=i+1;j<str1.length();j++) {
if(str1.charAt(j)=='+'||str1.charAt(j)=='-') {
b=j;
break;
}
b=j+1;
}
str2 = str1.substring(0,b);
str3 = str1.substring(b);
str2 = jiajian(str2,str1.charAt(i));
str1 = str2+str3;
if(str3 == "") {
return str1;
}
break;
}
}
T=true;
}
}

public static String chai_kuohao(String str) {
int a=0,b=0;
String str1="",temp,str2="",str3="";
for(int i=0;i<str.length();i++) {
if(str.charAt(i)=='(') {
a=i;
for(int j=i;j<str.length();j++) {
if(str.charAt(j)==')') {
b=j;
break;
}
}
str1=str1+str.substring(a+1,b);
str2=str.substring(0,a);
str3=str.substring(b+1);
System.out.println("这是括号里的:"+str1);
temp=jisuan(str1);
str1=str2+temp+str3;
}
}
System.out.println("括号内部计算完毕");
if(str1=="") {
str1=str;
}
return jisuan(str1);
}

public static void main(String[] args) {
int k=0;
Scanner S = new Scanner(System.in);
int math_n,/*math_k,*/math_nn,C=0,c,kuohao,d,W;
System.out.print("是否有乘除法(有请按1):");
C = S.nextInt();
System.out.print("是否有括号(有请按1):");
kuohao = S.nextInt();
System.out.println("操作数的个数:");
math_nn = S.nextInt();
System.out.println("要出的题数:");
math_n = S.nextInt();
String end[]=new String [math_n];
//String end_answer[] = new String [math_n];
System.out.print("输入列数:");
W = S.nextInt();
System.out.print("输入数值范围:");
c = S.nextInt();
d = S.nextInt();
S.close();
for(int i=0;i<math_n;i++) {
int a[] = new int[math_nn];
int b[] = new int[math_nn];
end[i] = dis_math( a, b, c, d, C, kuohao);
System.out.println(end[i]+"= ");
System.out.print(chai_kuohao(end[i]));
System.exit(1);
if(yanzheng(i,end)==true) {
continue;
}
if((i+1)%W==0) {
System.out.println();
}
}
System.out.println("重复数:"+k+"个");
}
}