日期:2014-05-20  浏览次数:20699 次

又100分求助!验证算法!!急!
String   valid= "1=7+8+9+10-23 "   其中“1、7....”等等为用户填的表单编号。。。

现在就是需要验证用户输入的数据能不能通过valid表示的关系。。。

这个算法咋写?

达人们帮帮。。。。

------解决方案--------------------
不是很清楚,帮忙顶。
------解决方案--------------------
用正则表达式来判断。或者String类提供的方法也能实现。你描述的很含糊,我就不写了。
------解决方案--------------------
看不懂题目,详细描述一下
------解决方案--------------------

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;
}
}
------解决方案--------------------
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 ");

------解决方案--------------------
哦,忘了,String还需要转换为整形,如:
total+=arr[new Integer(str2[i])];
------解决方案--------------------
上面的只考虑了加法运算吧
------解决方案--------------------
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 ");
}
}
------解决方案--------------------
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])]);
}
}