水电管理项目问题总结

1、有无返回值的情况

 public static String inputId(){
        System.out.println("输入任何与数字无关的字符,或者不为连续的 12 位数字,都是非法的!");
        String id=null;
        Scanner scanner=new Scanner(System.in);
        while(true){
            System.out.println("请输入学生学号");
            String id1=scanner.next();
            Pattern p=Pattern.compile("(\\d){12}");
            Matcher m=p.matcher(id1);
            if(m.matches()){
                id=id1;
                break;
            }else{
                System.out.println("输入格式错误");
            }
        }

      return id;
    }

有返回值只能使用while循环,使用for循环,当输入错误值时返回值不正确 

public static void readOneObject(){
        List list=readObject();
        String name=inputName();
        String id=inputId();
        int count=0;
        for(int x=0; x

无返回值的情况,for循环和while循环都可以使用

2、类型转换

String 类型转为double

String num=null;
Double num1=12.32;
num=Double.valueOf(num1);
public static double inputNum(){
        double num=0.0;
        while(true){
            Scanner scanner=new Scanner(System.in);
            System.out.println("请输入水费或电费:如12.23,46.23");
            String num1=scanner.next();
            Pattern p=Pattern.compile("^\\d+(\\.\\d{2})?$");
            Matcher m=p.matcher(num1);
            if(m.matches()){
                num=Double.valueOf(num1);
                break;
            }else{
                System.out.println("输入格式错误,请重新输入");
            }
        }

        return num;
    }

刚开始觉得正则表达式只能判断字符串,就把水电数量都定义成String类型,但是后面还要计算总量,以及费用,都要进行计算,字符串类型显然不行,所以把用正则表达式判断过后的字符串转为double类型即可;

3、对List集合中的对象进行按某个属性排序

1、继承Comparable接口

2、重写方法

@Override
public int compareTo(Teacher o) {
    return (int) (this.eleccount - o.getEleccount());
}

注意:返回值是int类型

3、使用

Collections.sort(list2);

4、对保存在文件中的对象进行修改

private static final long serialVersionUID = -3977943847316739319L;
需在每个实现序列化的类里加上

如果还报错,应该先把文件内容清空,再次运行即可

你可能感兴趣的:(java,算法,正则表达式,水电管理项目)