String valid="1=7+8+9+10-23" 其中“1、7....”等等为用户填的表单编号现在就是需要验证用户输入的数据能不能通过valid表示的关系这个算法咋写?达人们帮帮。
解决方案 »
- 设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。
- 其实我更希望Java7包含第一类属性,而不是闭包
- java
- 新手请教,我的applet没东西显示
- APPLET能不能做到安字节读写文件??
- 时间转换问题
- 100分求...答案JAVA JLABEL
- 晕了,昨天我的分还多些,怎么今天还少了?是什么问题??
- what is UI delegate???
- 谁有JAVA坚果系列的电子书呀?最好是中文的,给偶一份吧,谢谢了,100分不行,再给。。
- 关于jbutton的小疑惑
- 服务器连接成功、只是服务器端不接收文件内容、一直等待Socket dataSocket = serverDataSocket.accept();
重新描述:现在有一个验证条件存放在一个String中,String str="5=1+2-3+4",其中的数字代表的是数组的下标。现在就是需要一个算法来验证这个数组元素之间的关系是否满足以上验证条件,
即是否满足:arr[5]=arr[1]+arr[2]-arr[3]+arr[4]我的思路是这样的:
1.遍历数组,把下标放到一个新数组中,把符号放到另外一个数组中
2.分别遍历这两个数组,对应组合并转化符号字符为正常的关系运算符
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 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");
total+=arr[new Integer(str2[i])];
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 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])]);
}
}