1,产生各种类型的随机数:

public class RandomNumber{
 public static void main(String[] args) {
 //使用java.lang.Math的random方法生成随机数
 System.out.println("Math.random(): " + Math.random()); //使用不带参数的构造方法构造java.util.Random对象
 System.out.println("使用不带参数的构造方法构造的Random对象:");
  Random rd1 = new Random();
  // 产生各种类型的随机数
 // 按均匀分布产生整数
 System.out.println("int: " + rd1.nextInt());
  // 按均匀分布产生长整数
 System.out.println("long: " + rd1.nextLong());
  // 按均匀分布产生大于等于0,小于1的float数[0, 1)
  System.out.println("float: " + rd1.nextFloat());
  // 按均匀分布产生[0, 1)范围的double数
 System.out.println("double: " + rd1.nextDouble());
  // 按正态分布产生随机数
 System.out.println("Gaussian: " + rd1.nextGaussian()); //生成一系列随机数
 System.out.print("随机整数序列:");
  for (int i = 0; i < 5; i++) {
  System.out.print(rd1.nextInt() + " ");
  }
  System.out.println(); //指定随机数产生的范围
 System.out.print("[0,10)范围内随机整数序列: ");
  for (int i = 0; i < 10; i++) {
  // Random的nextInt(int n)方法返回一个[0, n)范围内的随机数
 System.out.print(rd1.nextInt(10) + " ");
  }
  System.out.println();
  System.out.print("[5,23)范围内随机整数序列: ");
  for (int i = 0; i < 10; i++) {
  // 因为nextInt(int n)方法的范围是从0开始的,
 // 所以需要把区间[5,28)转换成5 + [0, 23)。
 System.out.print(5 + rd1.nextInt(23) + " ");
  }
  System.out.println();
  System.out.print("利用nextFloat()生成[0,99)范围内的随机整数序列: ");
  for (int i = 0; i < 10; i++) {
  System.out.print((int) (rd1.nextDouble()* 100) + "/");
 // System.out.println("数学:"+(int)(Math.random()*100));
  }
  System.out.println();
  System.out.println(); //使用带参数的构造方法构造Random对象
 // 构造函数的参数是long类型,是生成随机数的种子。
 System.out.println("使用带参数的构造方法构造的Random对象:");
  Random ran2 = new Random(10);
  // 对于种子相同的Random对象,生成的随机数序列是一样的。
 System.out.println("使用种子为10的Random对象生成[0,10)内随机整数序列: ");
  for (int i = 0; i < 10; i++) {
  System.out.print(ran2.nextInt(10) + " ");
  }
  System.out.println();
  Random ran3 = new Random(10);
  System.out.println("使用另一个种子为10的Random对象生成[0,10)内随机整数序列: ");
  for (int i = 0; i < 10; i++) {
  System.out.print(ran3.nextInt(10) + " ");
  }
  System.out.println();
  // ran2和ran3生成的随机数序列是一样的,如果使用两个没带参数构造函数生成的Random对象,
 // 则不会出现这种情况,这是因为在没带参数构造函数生成的Random对象的种子缺省是当前系统时间的毫秒数。 //另外,直接使用Random无法避免生成重复的数字,如果需要生成不重复的随机数序列,需要借助数组和集合类 
  }
  }

 

2.小数点的精确度

publicstaticdouble round(double value, int scale,int roundingMode) {  
       BigDecimal bd = new BigDecimal(value);  
       bd = bd.setScale(scale, roundingMode);  
       double d = bd.doubleValue();  
       bd = null;  
       return d;  
   }   

   publicstaticvoid main(String[] argc) {  
       //下面都以保留2位小数为例  
          
       //ROUND_UP  
       //只要第2位后面存在大于0的小数,则第2位就+1  
       System.out.println(round(12.3401,2,BigDecimal.ROUND_UP));//12.35  
       System.out.println(round(-12.3401,2,BigDecimal.ROUND_UP));//-12.35  
       //ROUND_DOWN  
       //与ROUND_UP相反  
       //直接舍弃第2位后面的所有小数  
       System.out.println(round(12.349,2,BigDecimal.ROUND_DOWN));//12.34  
       System.out.println(round(-12.349,2,BigDecimal.ROUND_DOWN));//-12.34  
       //ROUND_CEILING  
       //如果数字>0则和ROUND_UP作用一样  
       //如果数字<0则和ROUND_DOWN作用一样  
       System.out.println(round(12.3401,2,BigDecimal.ROUND_CEILING));//12.35  
       System.out.println(round(-12.349,2,BigDecimal.ROUND_CEILING));//-12.34  
       //ROUND_FLOOR  
       //如果数字>0则和ROUND_DOWN作用一样  
       //如果数字<0则和ROUND_UP作用一样  
       System.out.println(round(12.349,2,BigDecimal.ROUND_FLOOR));//12.34  
       System.out.println(round(-12.3401,2,BigDecimal.ROUND_FLOOR));//-12.35  
       //ROUND_HALF_UP [这种方法最常用]  
       //如果第3位数字>=5,则第2位数字+1  
       //备注:只看第3位数字的值,不会考虑第3位之后的小数的  
       System.out.println(round(12.345,2,BigDecimal.ROUND_HALF_UP));//12.35  
       System.out.println(round(12.3449,2,BigDecimal.ROUND_HALF_UP));//12.34  
       System.out.println(round(-12.345,2,BigDecimal.ROUND_HALF_UP));//-12.35  
       System.out.println(round(-12.3449,2,BigDecimal.ROUND_HALF_UP));//-12.34  
       //ROUND_HALF_DOWN  
       //如果第3位数字>=5,则做ROUND_UP  
       //如果第3位数字<5,则做ROUND_DOWN  
       System.out.println(round(12.345,2,BigDecimal.ROUND_HALF_DOWN));//12.35  
       System.out.println(round(12.3449,2,BigDecimal.ROUND_HALF_DOWN));//12.34  
       System.out.println(round(-12.345,2,BigDecimal.ROUND_HALF_DOWN));//-12.35  
       System.out.println(round(-12.3449,2,BigDecimal.ROUND_HALF_DOWN));//-12.34  
       //ROUND_HALF_EVEN  
       //如果第3位是偶数,则做ROUND_HALF_DOWN  
       //如果第3位是奇数,则做ROUND_HALF_UP  
       System.out.println(round(12.346,2,BigDecimal.ROUND_HALF_EVEN));//12.35  
       System.out.println(round(12.345,2,BigDecimal.ROUND_HALF_EVEN));//12.35  
   }

 

3建立与数据库的连接并将查询结果以表格的形式显示出来

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
      String dburl="jdbc:odbc:mydb";                  //mydb是我建立的access数据源
Connection conn=DriverManager.getConnection(dburl);
   Statement stml=conn.createStatement();           
      //以上四条语句也可以改写为下面这四条语句,用来建立与数据库的连接:
             // String dburl="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=C:\\db1.mdb";
          // Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
          // Connection  conn = DriverManager.getConnection(dburl);
          // Statement  stml = conn.createStatement();
             
       Vector rows = newVector();//用于存储数据库中的行信息
        Vector columnHeads = newVector(); //用于存储数据库中的列标题
   try{
      ResultSet rs=stml.executeQuery("select * from student");
       boolean moreRecords = rs.next();//定位到达第一条记录,这句话一定要写
       
       ResultSetMetaData rsmd = rs.getMetaData(); //获得rs结果集中列属性信息
        for (int i = 1; i <= rsmd.getColumnCount(); ++i)
            columnHeads.addElement(rsmd.getColumnName(i)); //获得列名(将列名存放至向量columnHeads)
        do
        {
            rows.addElement(getNextRow(rs, rsmd));   //获取下一行记录
        } 
        while (rs.next());//利用循环获得所有记录
        JTable jTable = new JTable(rows, columnHeads);//将获得的行列数据信息作为参数重新构造表格视图
        jTable.setSize(new Dimension(383, 81));
        JScrollPane scroller = new JScrollPane(jTable);//创建带有滚动条的面板,并将表格视图加入
       f2.add(scroller, BorderLayout.CENTER);//将面板重新加入溶器中
       f2.validate(); //验证此容器及其所有子组件
      while(rs.next()){
          String ss=rs.getString("id");//显示输出结果
          String s2=rs.getString("name");
          System.out.println(ss+s2);
      }
      rs.close();
      stml.close();  
      conn.close();   //使用完后要记得关闭所有连接
   }catch(Exception ee){System.out.println(ee);}
 
 
//另外还要写一个getnextrow函数,用来获取下一行的数据
public Vector getNextRow(ResultSet rs, ResultSetMetaData rsmd)throws SQLException //该方法获取下一行记录
   {
             Vector currentRow = newVector(); //定义一个向量,用于存放记录
            for (int i = 1; i <= rsmd.getColumnCount(); ++i)
                currentRow.addElement(rs.getString(i));//获取记录
            return currentRow;//返回记录
       }