package yjmyzz
import scala.io.StdIn
object ScalaApp {
def main(args: Array[String]) {
println("please input something,press Enter to exit:") //每一行最后加不加分号都可以
readKeyboard //注:无参数的函数调用,加不加括号都行
println(add(1, 2) + "\n------\n")
println(div(1, 2) + "\n------\n")
println(div(1, 0) + "\n------\n")
println("5!=" + factorial(5) + "\n------\n")
println("-1!=" + factorial2(-1) + "\n------\n")
println("5!=" + factorial2(5) + "\n------\n")
}
/**
* 键盘读取示例(无返回值)
*/
def readKeyboard() {
//注:无返回值,即相当于返回值为Unit,所以上面的方法声明也可以写成
// def readKeyboard(): Unit = {
var line = StdIn.readLine()
while (line != "") {
println("you just input the : " + line)
line = StdIn.readLine()
}
println("bye\n")
}
/**
* 整数加法(带返回值示例)
* @param x
* @param y
* @return
*/
def add(x: Integer, y: Integer): Integer = {
print(x + " + " + y + " = ")
x + y //返回值,连return都不用加,十分简洁
}
/**
* 异常处理示例
*/
def div(x: Long, y: Long): Double = {
var hasError = false
try {
if (y.equals(0L)) throw new RuntimeException("divide by zero") else x.toDouble / y
}
catch {
case e: Exception => {
hasError = true
println("error:" + e.getMessage())
Double.MinValue
}
}
finally {
if (hasError) println("finished , but there has a error") else println("finished")
}
}
/**
* 递归示例
* @param x
* @return
*/
def factorial(x: Integer): Long = {
if (x.equals(0)) 1 else x * factorial(x - 1)
}
/**
* 演示for循环
* @param x
* @return
*/
def factorial2(x: Integer): Long = {
if (x <= 0) return 1 //注:加return后,下面的代码就不执行了
println("test")
var temp = 1L
for (i <- 1 to x) {
temp = temp * i
}
temp
}
}
从语法风格上看,确实比java简洁无数,有那么一丁点javascript的味道
scala 学习笔记(01) 函数定义、分支、循环、异常处理、递归
原文:http://www.cnblogs.com/yjmyzz/p/4694800.html