scala小程序代码块

1.随机生成数字

//这个是定长的,6位
object
Test { def main(args: Array[String]) { var i = 0 while (i < 1000) { var str = scala.util.Random.nextInt(1000000).toString i = i + 1 println(str.substring(0,6-str.length)+str) println(str.length) } } }

 另一种类似补齐的方式

//java代码块 
public static String Complement(String busNo) { //预先定义一个6位0 StringBuilder zero =new StringBuilder("000000"); String result = zero.substring(0, zero.length() - busNo.length()) + busNo; return result; }

 1.静态代码块

//java代码块
public
static Configuration conf; public static Connection conn; static { conf = HBaseConfiguration.create(); conf.set("hbase.zookeeper.property.clientPort", "2181"); conf.set("hbase.zookeeper.quorum", "192.168.113.12,192.168.113.13,192.168.113.14"); try { conn = ConnectionFactory.createConnection(conf); } catch (IOException e) { e.printStackTrace(); } } //如果需要可以在别的方法或main里使用配置 table = new HTable(conf, tableName);

 2.将传入的字符串反转的函数

//java代码块
//将传入的日期参数转换成rowkey的反转 public static String Fdate(String s) { char[] array = s.toCharArray(); String reverse = ""; //倒叙拿出 for (int i = array.length - 1; i >= 0; i--) reverse += array[i]; return reverse; }
//在main里这样调用使用

String startDate= "11308102";
String startRowkey = Fdate(startDate);

2.秒,分钟随机数

object Test {
  def main(args: Array[String]) {
    var i = 0
    while (i < 1000) {
      i = i + 1
      //小时
      val xx=(Math.random()*14+10)
      val xs=xx.formatted("%.0f") //小数点后面的不要,如果保留一位改为:formatted("%.1f")
      println(xs)
      //分钟
      val ff=(Math.random()*49+10) //打印的结果是10-59,没有一位数。如果想要带一位数改为这个:val a=(Math.random()*59)
      val fz=ff.formatted("%.0f")
    //    println(fz)
      //秒钟
      val mm=(Math.random()*49+10)
      val mz=mm.formatted("%.0f")
     // println(mz)
     // println("20180906"+xs+fz+mz)
    }
  }
}

3.字符串补零

object Test {
  def main(args: Array[String]) {
    var i = 0
    while (i < 100) {
      i = i + 1
      val ff=(Math.random()*999+1)
      var fz=ff.formatted("%.0f")
      while(fz.length()==2)
         fz= "0"+fz
      while(fz.length()==1)
       fz = "00"+fz
        println(fz)
    }
  }
}

4.两个数字换位置

val buf=""
def swap(il:Int,i2:Int){
    val tmp=buf(i1)
    buf(i1)=buf(i2)
    buf(i2)=tmp
}

5.只生成0或1值

object Test {
  def main(args: Array[String]) {
    var i = 0
    while (i < 1000) {
      i = i + 1
      val ff=(Math.random()*1)
      var fz=ff.formatted("%.0f")
        println(fz)
    }
  }
}

6.类型转换

var name = 1

1. name.toDouble

  使用toDouble、toInt等方法,对象名.to方法可以实现简单的数据类型转换。

2.name.doubleValue

  可以使用doubleValue、longValue、intValue三种方法,用于简单的数据类型转换。

3.Integer.valueOf(name)

  可将整型或者字符串型转换为Integer型。

4.String.valueOf(name)

  可将任一类型数据转换为字符串类型(包括字符数组)

  更为复杂具体的转换,需自定义转换类型及方法,使用占位符对数据集中所有元素进行指定的方式转换。

7.获取的字符串判断是否全是数字

var pattern = Pattern.compile("[0-9]*")
if(pattern.matcher(machno3).matches()&&(!machno3.isEmpty)&&(!machno3.equals(" "))){}

   另一种简单直接方式

if(machno3.isInstanceOf[Int]){}

8.查询是否有值

def booleanCount(connection: Connection,countSql:String,lineNo:String,Updown:Int,labelNo:Int):Boolean={
    var flag=false
    var pst=connection.prepareStatement(countSql)
    try{
      pst.setString(1,lineNo)
      pst.setInt(2,Updown)
      pst.setInt(3,labelNo)
      var rs: ResultSet = pst.executeQuery()
      if(rs.next()){
        var count=rs.getInt("count(*)")
        if(count>0){
          flag=true
        }
      }
      rs.close()
    }finally{
      pst.close()
    }
    flag
  }

 9.spark sql传入参数

 def dataformat(nn: String) : DataFrame ={

      val sql =
        s""" select MACH_NO MACHNO,REG_TIME REGTIME,LINE_NO LINENO,BUS_NO BUSNO from TM_MACH_RUN_INFO where
          |MACH_NO='${nn}'
          |""".stripMargin
      var frame = sqlContext.sql(sql)
      var a = frame
     return a
    }

 

posted @ 2018-09-06 10:38  聚云  阅读(616)  评论(0)    收藏  举报