正则表达式

tong_data 2012-04-24 11:50:24

package com;

import java.util.Scanner;
import javax.swing.JOptionPane;

public class Yun {
public static void main(String[] args) {
// Scanner console=new Scanner(System.in);
// System.out.println("输入运算:");
// String c=console.nextLine();
String c=JOptionPane.showInputDialog("输入运算:");
//以下为出现问题处
String[] s = c.trim().split("[+-*/]");
//String[] s = c.trim().split("[+*-/]");//加号和乘号替换无错误,可以运行
//String[] s = c.trim().split("[\\+-\\*/]");//不管用

int a=Integer.parseInt(s[0]);
int b=Integer.parseInt(s[1]);
if(c.contains("+")){
JOptionPane.showMessageDialog(null,a+"+"+b+"="+add(a,b));
}else if(c.contains("-")){
JOptionPane.showMessageDialog(null,a+"-"+b+"="+sub(a,b));
}else if(c.contains("*")){
JOptionPane.showMessageDialog(null,a+"*"+b+"="+mul(a,b));
}else if(c.contains("/")){
JOptionPane.showMessageDialog(null,a+"/"+b+"="+div(a,b));
}else{
System.out.println("输入有错误!");
}
}
private static int sub(int i,int j){
return i-j;
}
private static int add(int i,int j){
return i+j;
}
private static int div(int i,int j){
return i/j;
}
private static int mul(int i,int j){
return i*j;
}

}



本人只是做了个关于正则表达式的小测试
问题都在代码的注释里 请各位大神帮帮忙
...全文
196 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
tong_data 2012-04-30
  • 打赏
  • 举报
回复
看来很难等到有说服力的答案了 先结贴 期待高手解题.......
  • 打赏
  • 举报
回复
加号减号是特殊字符,要加\\转移。。
比如\n表示换行,"\\""表示一个斜线等。。
zhouyang209117 2012-04-27
  • 打赏
  • 举报
回复
晕,又说错了。对不起大家了。+前面需要加\来转义,所以是\+,但是\又要加\来转义,所以是\\+, 这样理解才对。
zhouyang209117 2012-04-27
  • 打赏
  • 举报
回复
不好意思,刚说错了。+前面需要加\来转义,所以是/+,但是/又要加/来转义,所以是//+, 这样理解才对。
zhouyang209117 2012-04-27
  • 打赏
  • 举报
回复
正则表达式中,要匹配+-*这三个符号不能直接写,前面要加\进行转义,在正则表达式中匹配+-*要写成\+\-\*但在java的正则表达式类库在要要求再加一个\才能匹配,所以在写java代码时匹配+-*要写成\\+\\-\\*但是除号/不用转义,所以写成/即可。所以应写成 String[] s = c.trim().split("[\\+\\-\\*/]");
我测试过,可以通过。
参考资料:
1.Ben Forta著,杨涛等译.正则表达式必知必会.人民邮电出版社.2007.12
2.Java 6 API Pattern类
3.http://blog.csdn.net/allwefantasy/article/details/3136570
sdojqy1122 2012-04-26
  • 打赏
  • 举报
回复
这个问题,我解释不了,坐等高手解释。
tong_data 2012-04-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
mark,有点虚。换下位置会出问题。
保守点,就这样吧。
String[] s = c.trim().split("(\\+|-|\\*|/)");
[/Quote]

要实现那个功能我能做出来 ,我是想问那个错误为什么会出现 ,是什么引发的?
结贴是美德 2012-04-24
  • 打赏
  • 举报
回复
String[] s = c.trim().split("[\\+-\\*/]");

这里面的俩\\何意?
ihrthk 2012-04-24
  • 打赏
  • 举报
回复
String[] s = c.trim().split("[\\+-/\\*]");
安特矮油 2012-04-24
  • 打赏
  • 举报
回复
[[+]-
  • /]这样不要混用
  • []的功能就可以了
sdojqy1122 2012-04-24
  • 打赏
  • 举报
回复
mark,有点虚。换下位置会出问题。
保守点,就这样吧。
String[] s = c.trim().split("(\\+|-|\\*|/)");

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧