黑马程序员技术交流社区

标题: 逻辑算法题,数学逻辑强的来,够胆你就来,等你来约!... [打印本页]

作者: ciying88    时间: 2017-3-11 01:22
标题: 逻辑算法题,数学逻辑强的来,够胆你就来,等你来约!...
现在有这么个需求:我需要这么一个方法,我会往这个方法里头传入四个 int 类型的参数,
即: int  a,  int  b,  int  c, int  d
例如:我传进来的四个int 数是:1,  4,4, 3 现在需要将传入的这四个整型的参数进行 加减乘除 法则运算!

但是现如今的问题是:你不能确定第一个数与第二个数用的是什么运算符连接,同理,第二个数与第三个数也不能确定用什么运算符号连接,第三个数与第四个数也是一样的道理!即:数与数之间连接起来的运算符(+、—、x、÷) 不能确定是用什么运算符连接起来,这就意味着我们在程序当中需要去进行一一罗列!再者,有可能这四个数连接起来用的全部是加法,也有可能全部是减法,有可能只用了其中两种,也有可能只用了运算符的其中三种,也可能四种全部用上了!

最后将运算得到的结果进行筛选,结果大于16的,全部过滤掉,pass掉,只留下小于等于16的结果,0 也可以过滤掉了,没有意义,并将结果进行从小到大排序打印出来!(当然,重复的结果留下其中一个就够了)!
作者: aweilovemusic    时间: 2017-3-11 06:35
这个有意思,

作者: aweilovemusic    时间: 2017-3-11 06:47
总共有64种不同的运算,假如那四个数字固定的话,可以做出来

作者: Mr_Maty    时间: 2017-3-11 12:24
说了半天炫炫呼呼的不就是个计算器吗。。。。。。可以通红switch语句来选择需要进行的运算规则

作者: Mr_Maty    时间: 2017-3-11 12:25
具体后面的筛选,结果都出来了随你怎么处理

作者: DCS    时间: 2017-3-11 13:17
不多说,我先看看,

作者: xiaoxiaoyuxie    时间: 2017-3-11 14:35
帖代码
    static String[] symbolArr = new String[]{"+","-","*","/"};
    static int sumNumber =0;
    static int[] valueNumbers =new int[]{1,2,3,4};
    public static void main(String[] args) {
        for (int i = 0; i < symbolArr.length ; i++) {
            for (int j = 0; j < symbolArr.length ; j++) {
                for (int k = 0; k < symbolArr.length; k++) {
                   sumNumber=getValue(valueNumbers,new String[]{symbolArr[i], symbolArr[j], symbolArr[k]});
                    if (sumNumber<=16){
                        System.out.print(sumNumber);
                    }
                }
            }
        }
    }
    static int getValue(int[] values, String[] args){
        for (int i = 0; i < args.length; i++) {
            switch (args[i]){
                case "+":
                    switch (i){
                        case 0:
                            sumNumber =values[0]+values[1];
                            break;
                        case 1:
                            sumNumber = sumNumber+values[2];
                            break;
                        case 2:
                            sumNumber = sumNumber+values[3];
                            break;
                    }
                    break;
                case "-":
                    switch (i){
                        case 0:
                            sumNumber =values[0]-values[1];
                            break;
                        case 1:
                            sumNumber = sumNumber-values[2];
                            break;
                        case 2:
                            sumNumber = sumNumber-values[3];
                            break;
                    }
                    break;
                case "*":
                    switch (i){
                        case 0:
                            sumNumber =values[0]*values[1];
                            break;
                        case 1:
                            sumNumber = sumNumber*values[2];
                            break;
                        case 2:
                            sumNumber = sumNumber*values[3];
                            break;
                    }
                    break;
                case "/":
                    switch (i){
                        case 0:
                            sumNumber =values[0]/values[1];
                            break;
                        case 1:
                            sumNumber = sumNumber/values[2];
                            break;
                        case 2:
                            sumNumber = sumNumber/values[3];
                            break;
                    }
                    break;
            }
        }
        return sumNumber;
    }




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2