伪代码,用简单的IF语句来完成 a X b = r// 解析式子 分得给 a X b r赋值 if (运算符已知){ if(r 未知) r = calc(a, b, X); else if (a 未知) a = calc(r, b, getInverseOp(X));//X的逆运算 else if (b 未知){ if(X == '+' || X == '*'){ b = calc(r, a, getInverseOp(X)); }else{ b = calc(r, a, X); } } } // 运算符未知 else{ for(char x : '+=*/'){ if(r == calc(a, b x){ X = x; } } }// 这个方法进行两个数的操作 double calc(double a, double c, char op){ } // 这个方法获得OP的逆运算,+返回-,*返回/ double getInverseOp(char op){ }
这道题是4元(abxr)已知3元求第未知元,不难 就是写起来比较麻烦而已,给你个我刚程序吧 呵呵 public class test4 { /** * @param args */ public static void main(String[] args) { // String a="3"; // String b="5"; // String r="15"; // int num=2; // System.out.println("已知abr求x x为"+XX(a, "", b, r, num));
String a="4"; String x="*"; String b="6"; int num=4; System.out.println("已知axb求r r为"+XX(a, x, b, "", num)); } public static String XX(String a, String x, String b, String r, int num) { // num表示要求a(1),x(2),b(3),r(4)中的哪个 String reString=""; int res=0; if (num == 2) { int aI=Integer.parseInt(a); int bI=Integer.parseInt(b); int rI=Integer.parseInt(r); if(aI+bI==rI){ reString="+"; }else if(aI-bI==rI) { reString="-"; }else if(aI*bI==rI){ reString="*"; }else if(aI/bI==rI){ reString="/"; } } else { switch (num) { case 1: {//求a int bI=Integer.parseInt(b); int rI=Integer.parseInt(r); res=getRes(bI,rI,x,1); reString=String.valueOf(res); } break; case 3: {//求b int aI=Integer.parseInt(a); int rI=Integer.parseInt(r); res=getRes(aI,rI,x,3); reString=String.valueOf(res); } break; case 4: { int aI=Integer.parseInt(a); int bI=Integer.parseInt(b); res=getRes(aI,bI,x,4); reString=String.valueOf(res); } break; default: System.out.println("error!"); return "error"; } } return reString; }
打错了,a,b,r,X之间只有一个是未知的.
a X b = r// 解析式子 分得给 a X b r赋值
if (运算符已知){
if(r 未知) r = calc(a, b, X);
else if (a 未知) a = calc(r, b, getInverseOp(X));//X的逆运算
else if (b 未知){
if(X == '+' || X == '*'){
b = calc(r, a, getInverseOp(X));
}else{
b = calc(r, a, X);
}
}
}
// 运算符未知
else{
for(char x : '+=*/'){
if(r == calc(a, b x){
X = x;
}
}
}// 这个方法进行两个数的操作
double calc(double a, double c, char op){
}
// 这个方法获得OP的逆运算,+返回-,*返回/
double getInverseOp(char op){
}
* @param args
*/
public static void main(String[] args) {
// String a="3";
// String b="5";
// String r="15";
// int num=2;
// System.out.println("已知abr求x x为"+XX(a, "", b, r, num));
String a="4";
String x="*";
String b="6";
int num=4;
System.out.println("已知axb求r r为"+XX(a, x, b, "", num)); } public static String XX(String a, String x, String b, String r, int num) {
// num表示要求a(1),x(2),b(3),r(4)中的哪个
String reString="";
int res=0;
if (num == 2) {
int aI=Integer.parseInt(a);
int bI=Integer.parseInt(b);
int rI=Integer.parseInt(r);
if(aI+bI==rI){
reString="+";
}else if(aI-bI==rI) {
reString="-";
}else if(aI*bI==rI){
reString="*";
}else if(aI/bI==rI){
reString="/";
}
} else {
switch (num) {
case 1: {//求a
int bI=Integer.parseInt(b);
int rI=Integer.parseInt(r);
res=getRes(bI,rI,x,1);
reString=String.valueOf(res);
}
break;
case 3: {//求b
int aI=Integer.parseInt(a);
int rI=Integer.parseInt(r);
res=getRes(aI,rI,x,3);
reString=String.valueOf(res);
}
break;
case 4: {
int aI=Integer.parseInt(a);
int bI=Integer.parseInt(b);
res=getRes(aI,bI,x,4);
reString=String.valueOf(res);
}
break;
default:
System.out.println("error!");
return "error";
} } return reString;
}
public static int getRes(int i,int j,String sign,int num)
{
//num表示是求abr 134 如果是求 a或b 则i表示a或b ,j表示 r
int res=0;
if(num==4) //求r i表示a,j表示b
{
if(sign.equals("+"))
{
res=i+j;
}else if(sign.equals("-")){
res=i-j;
}else if(sign.equals("*")){
res=i*j;
}else if(sign.equals("/")){
res=i/j;
}
}else if(num==3){ //求b i表示a j表示r
if(sign.equals("+"))
{
res=j-i;
}else if(sign.equals("-")){
res=i-j;
}else if(sign.equals("*")){
res=j/i;
}else if(sign.equals("/")){
res=i/j;
}
}else if(num==1){//求a i表示b j表示r
if(sign.equals("+"))
{
res=j-i;
}else if(sign.equals("-")){
res=i+j;
}else if(sign.equals("*")){
res=j/i;
}else if(sign.equals("/")){
res=j*i;
}
}
return res;
}
}