50,526
社区成员
发帖
与我相关
我的任务
分享
public class CuteString {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new CuteString().parse("23+45");
}
private void parse(String str)
{
Pattern p=Pattern.compile("([0-9]+)([+-])([0-9]+)");
Matcher m=p.matcher(str);
String a="0";
String b="0";
String f="+";
if(m.matches())
{
a=m.group(1);
f=m.group(2);
b=m.group(3);
}
else
{
System.out.println("非法字符");
return;
}
int ia=Integer.parseInt(a);
int ib=Integer.parseInt(b);
System.out.println(f.equals("+"));
//int iff=Integer.parseInt(f);
int result=(f.equals("+")?(ia+ib):(ia-ib));
System.out.println("结果="+result);
}
}
/**
*调用者要保证str里面字符串的合法性(含有+或-操作符)
*/
void fun(String str)
{
boolean isplus = str.indexOf("+") != -1;//判断输入是“+”还是“-”,这里偷了点懒!如果输入字符串里面没有“+”,直接默认是“-” o(∩_∩)o 哈哈
int index = !isplus ? str.indexOf("-") : str.indexOf("+");//取得操作符位置
String tmp1 = str.substring(0,index);//取得操作数1
String tmp2 = str.substring(index+1);//取得操作数2
int int1,int2;
try{
int1 = Integer.parseInt(tmp1);//将取得的String类型操作数转化为int型
int2 = Integer.parseInt(tmp2);
}catch (Exception e) {//如果取得的操作数任意一个不是数字的话会抛出异常
System.out.println("非法字符");//提示非法字符
return;
}
int result = isplus ? int1+int2 : int1-int2;//操作数都是整形,进行运算
System.out.println(result);//打印结果
}
//以上实现仅仅使用了,java.lang包下面的Integer和String两个类,使用的方法也是J2ME支持的,而且简单明了,一般有点经验都应该能看明白吧?
Pattern p = Pattern.compile("^(\\d+[\\+-])+\\d+$");
Matcher m = p.matcher("123+356-93+874-89");
if(m.find()){
// 计算我就不写了。直接用\d+匹配出数字,再按符号计算就行。不用考虑优先级。
}
package com.xuz.datastruct.csdn;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexTest {
/**
* @param args
*/
public static void main(String[] args) {
String str = "123+456";
String regex = "^\\d+[+-]\\d+$";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);
if(m.matches()){
String[] temp = str.split("[+-]");
if (str.indexOf("+") > 0) {
System.out.println(Double.parseDouble(temp[0])+Double.parseDouble(temp[1]));
} else {
System.out.println(Double.parseDouble(temp[0])-Double.parseDouble(temp[1]));
}
} else {
System.out.println("匹配失败");
}
}
}