开发者学堂课程【Scala 核心编程-基础:从控制台输入内容】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/609/detail/8908
从控制台输入内容
基本内容
一、 键盘输入语句
二、 Scala 的实现
一、 键盘输入语句
1、 介绍
在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。
InputDemo.scala
2、 步骤:
(1) 导入该类的所在包
(2) 创建该类对象(声明变量)
(3) 调用里面的功能
在 scala 里面比较简单,其实只使用了一个方法。
3、 案例演示
要求:可以从控制台接收用户信息【姓名,年龄,薪水】。
(1) 回顾 Java 的实现;//自行复习
(2) Scala 的实现 [ import scala. io StdlIn ]
二、 Scala 的实现
1、 案例演示
首先新建一个包,起名为“inputcon”。
package com. atguigu. chapter03.
inputcon
object Demo01 {
def main(args: Array[string] ): Unit = {
/*
要求:可以从控制台接收用户信息【姓名,年龄,薪水】。
*/
println(“请输入姓名”)
//提示程序的一句话
val
name
=
StdIn
.readLine
1
( )
//1在文章最后有详细解释
//输出:使用一个变量来接收,注意:此处的 StdIn 是 object,在前面几节课的学习中知道,object 中的程序是直接可以使用的。
println(“请输入年龄”)
val
age
=
StdIn
.read
Int()
//年龄是整数。
println(“请输入薪水”)
val
sal
=
StdIn
.read
Double()
//薪水是 Double 类型的。
printf(“用户的信息为 name=%s age=%d sal=%.2f,name,age,sal)
//格式化输出信息
2、 输出的结果:
在代码执行的过程中,如果执行到某个地方,可以看到光标在某个地方进行闪烁,但实际上看不到,程序会等待设计者进行输入,假设输入名字:Tom;名字输入完之后会提示输入年龄,接着输入年龄:90;接着输入薪水:78907.12;
最后就可以看到用户的信息为 name=tom age=90 sal=78907.120000,薪水之后会默认保留小数六七位,所以需要格式化:sal=%.2f。
3、 总结
在 scala 里面如何获取它的输入非常简单,比 java 还简单,Java 需要设计一个对象去读,但是在 scala 里面直接设计object,从 object 里面直接读取就可以了,这个方法来自于 StdIn 的特质,这是继承过来的一个方法。
1此处讲解为什么 StdIn.readLine( )可以直接使用;
object Demo01 {
def main(args: Array[string] ): Unit = {
/*
要求:可以从控制台接收用户信息【姓名,年龄,薪水】。
*/
printl(“请输入姓名”)
//提示程序的一句话
val
name
=
StdIn
.readLine( )
Ca
t.sayHi( )
//此处有一个 Trait,在Java里面叫做 intertface,在 Scala 里面 Trait 叫做特质, 兼顾 Java 里面接口和抽象里的特点,且存在 readLine,那么为什么 object 可以直接使用?因为特质里面它拥有这些方法,举个例子,直接把这个方法写出来,一样也可以用啊,它就是说相当于这个对象里面的方法可以使用,所以需要理解透彻 object 是怎么来的。
}
}
//声明了一个对象(伴生对象),讲解 oop 时,还要深入系统的讲解。
object
Cat
{
//此处对应 cat
//这里有一个方法
def
sayHi():Unit
= {
printl(“小狗汪汪叫
….
”)
}
}
运行结果:这里不再进行去举例了,运行结果就会输出“小狗汪汪叫”。
关于 StdIn.readLine 在这里先简单的进行讲解,在后面的课程中会做详细的内容介绍,因为此处如果不讲解StdIn.readLine,就会引起一些误解,可能会导致学员在学习的过程中产生疑问:为什么输入了 StdIn.readLine就可以直接使用object了呢?因为在 scala 里面伴生对象的方法或者伴生对象继承的特质里面的方法可以继续使用,比如说:
object Demo01 {
def main(args: Array[string] ): Unit = {
/*
要求:可以从控制台接收用户信息【姓名,年龄,薪水】。
*/
printl(“请输入姓名”)
//提示程序的一句话
val
name
=
StdIn
.readLine( )
//
C
a
t
.sayHi()
Cat.sayHello( )
Cat.sayHi( )
}
}
//声明了一个对象(伴生对象)
object
Cat
extends AAA {
//此处对应 cat
//这里有一个方法
def
sayHi():Unit
= {
printl(“小狗汪汪叫
….
”)
}
}
trait
AAA
{
def
sayHello():Unit
= {
//一个方法
println(“AAA sayHello”)
}
//AAA 是特质,等价于 Java 中的 interface + abstract class,也就是说,在 scala 中,将 Java 的接口给去掉了,换成了特质,这个特质兼顾 Java 里面的接口和抽象类,它们两个已经融入到一起了。那么此时 Cat.sayHello( )、Cat.sayHi( )都可以使用,是个简单的逻辑,接着回头看就会明白为什么输入了 StdIn.readLine 就可以直接使用object。StdIn 是一个 object,但是 object 里面并没有方法,为什么可以使用 readLine 呢?因为在 object 里面继承了一个 trait,trait 里面有可以直接使用 readLine 的方法,在后面的课程中会继续学习。