写一个程序,解析如下格式的字符串,并将解析的数字序列打印出来。
   字符串格式举例: -1~2, 3~3, 5~10, 7~15x3
   ~ 代表数字的范围, -1~2 代表从-1开始到2之间的所有数字。 3~3 代表从3开始到3的所有数字,也就是3
   7~15x3代表从7开始,最大为15,每隔3个数字取一个数字,所以7~15x3代表 7 10 13 三个数字。
   所以上面的举例字符串代表 -1 0 1 2 3 5 6 7 8 9 10 7 10 13 这样的数字序列

解决方案 »

  1.   

    安装魔兽中打开IDE很卡
    思路:
    1.split分割成数组。
    2.循环
    3.判断同时存在~和X
      1.截取~左边的和右边的
      2.截取X右边的,
      3.计算出并保存
    4.否则
      1.截取~左边的和右边的
      2.计算出并保存
    5.打印
      

  2.   


    import java.util.regex.Pattern;/**
     * 解析如下格式的字符串,并将解析的数字序列打印出来。
     * 
     * @author Jongly
     * 
     */public class Test { /**
     * @param args
     */
    public static void main(String[] args) {
    output("-1~2");
    output("3~3");
    output("5~10");
    output("7~15x3");
    } private static void output(String expression) {
    String regex = "^-{0,1}\\d+~\\d+(x\\d+){0,1}$";
    Pattern pattern = Pattern.compile(regex);
    if (pattern.matcher(expression).find()) {
    String[] str = expression.split("~|x");  //1
    int max = Integer.parseInt(str[1]), min = Integer.parseInt(str[0]);
    if (str.length == 3) {
    System.out.println(min);   //2
    for (int j = 0; j <= (max - min) / 3; j++) 
    System.out.println(min += 3);  //3
    }
    else  //4
    for (int i = min; i <= max; i++) 
    System.out.println(i);

    } else  
    System.err.println("Input Error...");
    }
    }注解:
        (对上述代码中部分注释的说明,如果还有不懂的请私下交流 QQ850945386)
    1.如果满足正则表达式regex,则按照字符“~或者x”截取该exception成String[]
    2.如果截取的String[]有三个元素,则首先打印输出首元素
    3.隔3输出一个数字
    4.只有两个元素,直接输出
      

  3.   

    对楼上的做了一点修改
    楼上的7~15x3 写死了
    import java.util.regex.Pattern;public class Analy {
    /**
    * @param args
    */
    public static void main(String[] args) {
    output("-1~2");
    output("3~3");
    output("5~10");
    output("7~15x4");
    } private static void output(String expression) {
    String regex = "^-{0,1}\\d+~\\d+(x\\d+){0,1}$";
    Pattern pattern = Pattern.compile(regex);
    if (pattern.matcher(expression).find()) {
    String[] str = expression.split("~|x"); 
    int max = Integer.parseInt(str[1]), min = Integer.parseInt(str[0]);
    if (str.length == 3) {
    System.out.println(min); 
    int n = Integer.parseInt(str[2]); for (int j = 0; j <= (max - min) / n; j++) 
    System.out.println(min += n); 
    } else {
    for (int i = min; i <= max; i++) 
    System.out.println(i);
    }
    } else 
    System.err.println("Input Error...");
    }}