1.四则运算 为了简化运算,暂不考虑括号().比如String str="3+5*2-1+2/2"  最后结果为132.1-9这九位数字中能组成3个百位数,要求第二个百位数是第一个百位数的2倍,第三个百位数是第二个百位数的二倍。
并且1-9这九个数字只能用一次,不能重复使用 。1:
那个四则运算 首先要按正则来拆分:
比如 String string="3+5*2-1+2/2
String[] str=string.split("//d+")//这是按数字拆分 得到的是运算符号
String[] str2=string.split("//D+")//这是按运算符号拆分 得到的是运算数字下面就没思路了?请指教下。

解决方案 »

  1.   

    第一道可以看看这个,http://blog.csdn.net/hudie1234567/archive/2010/09/18/5892175.aspx
      

  2.   

    第二道题,代码如下:import java.util.ArrayList;
    import java.util.List;
    public class Number {
    public static void main(String[] args) {
    List<Integer> list = new ArrayList<Integer>();
    List<String> result = new ArrayList<String>();
    int num = 0;
    //构造没有重复数字的三位数,存入list
    for(int i=1; i<=9; i++) {
    for(int j=1; j<=9; j++) {
    if(i == j)
    continue;
    for(int k=1; k<=9; k++) {
    if(i == k || j == k)
    continue;
    num = i * 100 + j * 10 + k;
    list.add(num);
    }
    }
    }

    //找到符合的三个百位数,构造成一个中间有一个空格的字符串,存入result
    for(int i=0; i<list.size(); i++) {
    for(int j=0; j<list.size(); j++) {
    for(int k=0; k<list.size(); k++) {
    if((list.get(j) == 2 * list.get(i)) && (list.get(k) == list.get(j) * 2))
    result.add(list.get(i) + " " + list.get(j) + " " + list.get(k));
    }
    }
    }

    //打印结果
    for(int i=0; i<result.size(); i++) {
    System.out.println(result.get(i));
    }
    }
    }