马太效应 发表于 2017-8-3 23:58:10

Java暑期学习Day30

303030

static/image/hrline/5.gif


import java.util.Scanner;

public class Average4 {
        public static void main(String[] args) {
               
                double sum=0;
                int count=0;
                while(true){
                        int number=nextInt();
                        if (number==0){
                                break;
                        }
                        sum+=number;
                        count++;
                }
                System.out.printf("平均%.2f%n",sum/count);

        }
        static Scanner console=new Scanner(System.in);
        static int nextInt(){
                String input=console.next();
                while(!input.matches("\\d*")){
                        System.out.println("请输入数字");
                        input=console.next();       
                }
                return Integer.parseInt(input);
        }

}
上例的nextInt()方法中,使用了Scanner的next()方法来取得用户输入的下个字符串,如果字符串不是数字格式,就会提示用户输入数字,String的matches()方法中设定了“\\d*”,这是规则(正则)表达式(Regular Expression ),表示检查字符串中的字符是不是数字,若是则matches()会返回true。

正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。


构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与运算符可以将小的表达式结合在一起来创建更大的表达式。正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。

正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字模式。模式描述在搜索文本时要匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

matches 火柴 比赛(match的负数) 配的人或物

注意点:使用try、catch捕捉异常对象时要注意,如果父类异常对象在子类异常对象前被捕捉,则catch子类异常对象的区块永远不会被执行,编译程序会检查出这个错误。

若catch异常后的区块内容重复了,以下这种就算重复。
    try{
做一些事
}catch(IOException e){
e.printStackTrace();
}catch(InterruptedException e){e.printStackTrace();
}catch(ClassCastException e){e.printStackTrace();
}
这种撰写不仅无趣且对维护没有帮助。从JDK7开始,可以使用多重捕捉(Multi-catch)语法:

try{做一些事...
}catch( IOException | InterruptedException | ClassCastException e ){
e.printStackTrace();
}

这样撰写简洁得多,catch区块会在发生IOException、InterruptedException 或 ClassCastException 时执行,不过仍得注意异常的继承。catch括号中列出的异常不得有继承关系,否则会发生编译错误。






页: [1]
查看完整版本: Java暑期学习Day30