String valid="1=7+8+9+10-23" 其中“1、7....”等等为用户填的表单编号现在就是需要验证用户输入的数据能不能通过valid表示的关系这个算法咋写?达人们帮帮。

解决方案 »

  1.   

    用正则表达式来判断。或者String类提供的方法也能实现。你描述的很含糊,我就不写了。
      

  2.   

    =================================
    重新描述:现在有一个验证条件存放在一个String中,String str="5=1+2-3+4",其中的数字代表的是数组的下标。现在就是需要一个算法来验证这个数组元素之间的关系是否满足以上验证条件,
    即是否满足:arr[5]=arr[1]+arr[2]-arr[3]+arr[4]我的思路是这样的:
    1.遍历数组,把下标放到一个新数组中,把符号放到另外一个数组中
    2.分别遍历这两个数组,对应组合并转化符号字符为正常的关系运算符
      

  3.   


    public class ReflectNum { public static void main(String[] args){
    int[] arr = {0,11,22,33,55,55};
    String str="5=1+2-3+4";
    String[] numb_left = (str.split("="))[0].split("[+-]");
    String[] numb_right = (str.split("="))[1].split("[+-]");
    String[] code_left = (str.split("="))[0].split("[0-9]+");
    String[] code_right = (str.split("="))[1].split("[0-9]+");

    if(getNumber(arr,numb_left,code_left) 
    == getNumber(arr,numb_right,code_right))
    System.out.println("success!");
    else
    System.out.println("failed!");
    }

    public static int getNumber(int[] arr,String[] num,String[] flg){
    int sum=arr[new Integer(num[0]).intValue()];

    for(int i=1;i<num.length;i++)
    sum=step(arr[new Integer(num[i]).intValue()],sum,flg[i]); return sum;
    }
    public static int step(int item,int sum,String flg){ if(flg.equals("+")) sum+=item;
    else if(flg.equals("-")) sum-=item;

    return sum;
    }
    }
      

  4.   

    String str="5=1+2+3+4";
    String str1[]=str.split("=");
    String str2[]=str1[1].split("\\+");
    double total=0;
    for(int i=0; i<str2.length; i++) total+=arr[str2[i]];
    if(total==arr[str1[0]]) System.out.println("Equal");
      

  5.   

    哦,忘了,String还需要转换为整形,如:
    total+=arr[new Integer(str2[i])];
      

  6.   

    public static void main (String arg[]) {
    double arr[]={1,2,3,4,10};
    String str="4=0+1-2+3";
    String str1[]=str.split("=");
    String str2[]=str1[1].split("\\+|-");
    String str3=str1[1].replaceAll("[0-9]","");
    double total=arr[new Integer(str2[0])];
    for(int i=1; i<str2.length; i++) {
    if(str3.charAt(i-1)=='+') total+=arr[new Integer(str2[i])];
    else total-=arr[new Integer(str2[i])];
    }
    if(total==arr[new Integer(str1[0])]) System.out.println("Equal");
    }
    }
      

  7.   

    public class Test{
     
        public static void main(String[] args) 
        {
         int[] arr = {0,11,22,33,55,55};        String s  = "5=1+2-3+4";
            String[] s1 = s.split("\\D");
            
            System.out.println(arr[Integer.parseInt(s1[0])]
            ==arr[Integer.parseInt(s1[1])]+arr[Integer.parseInt(s1[2])]
            -arr[Integer.parseInt(s1[3])]+arr[Integer.parseInt(s1[4])]);    
        }
    }