JAVA实现5 5 5 5 5=2填运算符号,使等式成立

中间中能写+、-、*、/,求实现代码求出所有满足条件的个数(输出个数),并要求输出成立的等式... 中间中能写+、-、*、/,求实现代码
求出所有满足条件的个数(输出个数),并要求输出成立的等式
展开
 我来答
popantx5CgP
2013-07-16 · TA获得超过176个赞
知道小有建树答主
回答量:106
采纳率:0%
帮助的人:114万
展开全部

挺好玩的一个东西,写着玩儿了.

用递归实现了一个, 可以自定义 5 5 5 5 ,也可以额  5 5 6 6 , 也可以 5 5 5 6 6 6 

下面是代码

import java.util.ArrayList;
import java.util.List;


public class TestComputeUtil {
public static void main(String[] args) {
List<String> rightExpressions = getRightExpressions(7, 6,5,5,7);
System.out.println(rightExpressions);
}
/**  
 * 工具方法,得到符合期望值的四则运算表达式,如果结果集size为0,则说明没有结果  
 *
 * <p>工具方法,得到正确的四则表达式</p>
 * @param result 期望得到的结果
 * @param parameter 所有的待计算的数字 例如:6,5,5,7
 * @return List<String>  复合要求的结果,如果size为0 ,则说明没有符合结果的内容
 * @throws  
 */ 
public static List<String> getRightExpressions(int result , int...parameter){
List<String> resultExpressions = new ArrayList<String>();
if(parameter == null){
return resultExpressions; 
}
computeResult(resultExpressions,new StringBuilder().append(parameter[0]), result , parameter[0] , 1, parameter);
return resultExpressions;
}
/**  
 * 根据指针(index)的位置,来进行四则运算.  
 *
 * <p>根据指针(index)的位置,来进行四则运算.</p>
 * @param resultExpressions 最终的结果集合,这里省事儿了,直接传进去了,当然,这种方法并不好,但省事儿,你懂得,哈哈
 * @param expression 指针(index)前面所有的四则运算表达式
 * @param result 期望的计算结果
 * @param stepResult 指针(index)前面所有的四则运算表达式的结果
 * @param index 指针位置
 * @param parameter 参数数组   
 * @throws  
 */ 
private static void computeResult(List<String> resultExpressions,StringBuilder expression , int result ,Integer stepResult,int index , int[] parameter){
if(parameter.length >= index+1){
computeResult(resultExpressions, expression, result, stepResult, index, parameter, CalculationSymbols.ADD);
computeResult(resultExpressions, expression, result, stepResult, index, parameter, CalculationSymbols.SUB);
computeResult(resultExpressions, expression, result, stepResult, index, parameter, CalculationSymbols.MULT);
computeResult(resultExpressions, expression, result, stepResult, index, parameter, CalculationSymbols.DIV);
}else {
if(result == stepResult){
resultExpressions.add(expression.toString());
}
}
}
/**  
 *   一个计算流程包括递归调用computeResult(List<String> resultExpressions,StringBuilder expression , int result ,Integer stepResult,int index , int[] parameter)这个方法
 *
 * <p>一个计算流程 , 在这里加减乘除都是一个完整的计算流程.如果以后还想增加别的运算符号的话,只需要修改一下计算方法,以及枚举类.便于扩充</p>
 * @param resultExpressions 
 * @param expression
 * @param result
 * @param stepResult
 * @param index
 * @param parameter
 * @param sign void   
 * @throws  
 */ 
private static void computeResult(List<String> resultExpressions,StringBuilder expression , int result ,Integer stepResult,int index , int[] parameter , CalculationSymbols sign){
StringBuilder newExpression = new StringBuilder(expression);
int newResult = computeResult(stepResult, parameter[index], sign, newExpression);
computeResult(resultExpressions, newExpression, result, newResult, index+1, parameter);
}
/**
 * 计算  
 *
 * <p>计算</p>
 * @param left 
 * @param right
 * @param sign
 * @return int   
 * @throws  
 */ 
private static int computeResult(int left , int right , CalculationSymbols sign, StringBuilder expression){
switch (sign) {
case ADD:
expression.append("+").append(right);
return left + right;
case SUB:
expression.append("-").append(right);
return left - right;
case MULT:
expression.append("*").append(right);
return left * right;
case DIV:
expression.append("/").append(right);
return left / right;
default:
throw new UnsupportedOperationException("不支持的操作类型!");
}
}

}
/**  
 * 计算符号枚举
 * 
 * <p>计算符号枚举</p> 
 * @author an 
 * @version V1.0  
 */ 
enum CalculationSymbols{
ADD,SUB,MULT,DIV
}


额,刚看到了一个问题,是这样的,不能用Integer , 需要把所有的Integer给替换成为Double,因为,1/2 = 0 ,你懂的..只需要修改参数类型,以及计算的地方,即可

手打~~

qi_ling2005
2013-07-16 · TA获得超过500个赞
知道小有建树答主
回答量:468
采纳率:0%
帮助的人:272万
展开全部
/*我说下思路:有5个数字,有4个空隔要填写,所以可以把这几个运行符放在一个字符数组里,然后去
*遍历地填写到4个空隔中,比如第一次是5+5+5+5+5 第二次就 5+5+5+5-5 .....然后再解析这
*个字符串,看答案是不是等于2(至于怎么解析这个加减乘除字符串可以参考这里:
http://zhidao.baidu.com/question/83601633.html
*/
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
erliang20088
2013-07-16 · TA获得超过2496个赞
知道小有建树答主
回答量:926
采纳率:100%
帮助的人:948万
展开全部
1、刚刚是从快速模式下写的问题,不好意思没看清。
2、看了具体要求,这个需要编程实现才可以。
符号就4个,填4个,用穷举解决这个问题最简单了,复杂度也就4*4。
试下看吧。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Minuo_a
2013-07-16 · TA获得超过330个赞
知道答主
回答量:161
采纳率:0%
帮助的人:81.6万
展开全部
(5+5)*5/(5*5)=2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
水源187
2020-02-27
知道答主
回答量:2
采纳率:0%
帮助的人:1161
展开全部

5x5-5x5=0


已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式