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;
}}
 
   本人只是做了个关于正则表达式的小测试
   问题都在代码的注释里 请各位大神帮帮忙

解决方案 »

  1.   

    String[] s = c.trim().split("[\\+-/\\*]");
      

  2.   

    String[] s = c.trim().split("[\\+-\\*/]");这里面的俩\\何意?
      

  3.   

    ,有点虚。换下位置会出问题。
    保守点,就这样吧。
    String[] s = c.trim().split("(\\+|-|\\*|/)");
      

  4.   

    正则表达式中,要匹配+-*这三个符号不能直接写,前面要加\进行转义,在正则表达式中匹配+-*要写成\+\-\*但在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