• Scala入门到精通(尚硅谷学习笔记)章节四——输入和输出


    输出

    (一)、print:直接输出
    print(s"$a")输出为变量的值
    (二)、println():打印时自动换行
    println()相当于print(+’\n’)
    (三)、printf():文字格式化输出
    printf()包含了两种类型的对象:普通字符转换说明 。在输出时,普通字符将原样不动地复制到标准输出,转换说明并不直接输出而是用于控制 printf 中参数的转换和打印。每个转换说明都由一个百分号字符(%)开始,以转换说明结束,从而说明输出数据的类型、宽度、精度等
    格式:%[flags][width][.precision][length]specifier,即:%[标志][最小宽度][.精度][类型长度]说明符,其中[]部分是可选的
    说明符(specifier)

    说明符(specifier)对应数据类型描述
    dint输出类型为有符号的十进制整数
    ounsigned int输出类型为无符号八进制整数(没有前导 0)
    x / Xunsigned int输出类型为无符号十六进制整数,x 对应的是 abcdef,X 对应的是 ABCDEF(没有前导 0x 或者 0X)
    fdouble输出类型为十进制表示的浮点数,默认精度为6
    e / Edouble输出类型为科学计数法表示的数,此处 “e” 的大小写代表在输出时用的 “e” 的大小写,默认浮点数精度为6
    gdouble根据数值不同自动选择 %f 或 %e,%e 格式在指数小于-4或指数大于等于精度时用使用
    Gdouble根据数值不同自动选择 %f 或 %E,%E 格式在指数小于-4或指数大于等于精度时用使用
    cchar输出类型为字符型。可以把输入的数字按照ASCII码相应转换为对应的字符
    schar *输出类型为字符串。输出字符串中的字符直至遇到字符串中的空字符(字符串以 '\0‘ 结尾,这个 ‘\0’ 即空字符)或者已打印了由精度指定的字符数
    %不转换参数不进行转换,输出字符‘%’(百分号)本身
        val ch = 'h'
        val str ="asdfaslkfdasflkashfkljashfklashfas"
        val count = -9243
        val fp =251.7366
        
        printf( "Decimal %d as:\n   Hex: %Xh   C hex: 0x%x  Octal: %o\n", count, count, count, count )
        
        //Decimal -9243 as:
       //Hex: FFFFDBE5h   C hex: 0xffffdbe5  Octal: 37777755745
    
        // 显示字符
        printf("Characters in field:     %10c\n", ch)
    	//Characters in field:     h
    
    
        // 显示实数
        printf("Real numbers:\n   %f %.2f %e %E\n", fp, fp, fp, fp )
        //Real numbers:
       //251.736600 251.74 2.517366e+02 2.517366E+02
    
    
        //显示字符串
        printf("recent:   %s   %%", str)
    	//recent:	   asdfaslkfdasflkashfkljashfklashfas   %
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    flags(标志)
    标志(flags)用于规定输出样式

    flags(标志)对应数据类型描述
    -减号在给定的字段宽度内左对齐,右边填充空格(默认右对齐)
    +加号强制在结果之前显示加号或减号(+ 或 -),即正数前面会显示 + 号;默认情况下,只有负数前面会显示一个 - 号
    (空格)空格输出值为正时加上空格,为负时加上负号
    #井号specifier 是 o、x、X 时,增加前缀 0、0x、0X;specifier 是 e、E、f、g、G 时,一定使用小数点;specifier 是 g、G 时,尾部的 0 保留
    0数字零对于所有的数字格式,使用前导零填充字段宽度(如果出现了减号标志或者指定了精度,则忽略该标志)
    val RENT = 3852.99
    val PAGES = 931
    
    printf("*%-10d*\n", PAGES)                            //左对齐,右边补空格
    //*931       *
    
    printf("*%+4.2f*\n", RENT)                            //输出正负号
    //*+3852.99*
    
    printf("%x %X %#x\n", 31, 31, 31)                     //输出0x
    //1f 1F 0x1f
    
    printf("**%d**% d**% d**\n", 42, 42, -42)             //正号用空格替代,负号输出
    //**42** 42**-42**
    
    printf("**%5d**%05d**\n", 6, 6, 6, 6)  //前面补0
    //**    6**00006**
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    width(最小宽度)
    最小宽度(width)用于控制显示字段的宽度

    width(最小宽度)对应数据类型描述
    digit(n)数字字段宽度的最小值,如果输出的字段长度小于该数,结果会用前导空格填充;如果输出的字段长度大于该数,结果使用更宽的字段,不会截断输出
    printf("*%2d*\n", PAGES);         //输出的字段长度大于最小宽度,不会截断输出
    //*931*
    
    printf("*%10d*\n", PAGES);        //默认右对齐,左边补空格
    //*       931*
    
    • 1
    • 2
    • 3
    • 4
    • 5

    .precision(精度)
    精度(.precision)用于指定输出精度

    .precision(精度)对应数据类型描述
    .digit(n)点+数字对于整数说明符(d、i、o、u、x、X):precision 指定了要打印的数字的最小位数。如果写入的值短于该数,结果会用前导零来填充。如果写入的值长于该数,结果不会被截断。精度为 0 意味着不写入任何字符;对于 e、E 和 f 说明符:要在小数点后输出的小数位数;对于 g 和 G 说明符:要输出的最大有效位数;对于 s 说明符:要输出的最大字符数。默认情况下,所有字符都会被输出,直到遇到末尾的空字符;对于 c 说明符:没有任何影响;当未指定任何精度时,默认为 1。如果指定时只使用点而不带有一个显式值,则标识其后跟随一个 0。
    printf("*%4.2f*\n", RENT)
    //*3852.99*
    
    printf("*%3.1f*\n", RENT)
    //*3853.0*
    
    
    printf("*%10.3f*\n", RENT)
    //*  3852.990*
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    键盘输入

    StdIn

    Scala中终端输入需要导入包scala.io.StdIn
    基本语法
    StdIn.readLine()
    StdIn.readShort()
    StdIn.readDouble()

           // 1 输入姓名
            println("input name:")
            var name = StdIn.readLine()
    
            // 2 输入年龄
            println("input age:")
            var age = StdIn.readShort()
    
            // 3 输入薪水
            println("input sal:")
            var sal = StdIn.readDouble()
    
            // 4 打印
            println("name=" + name)
            println("age=" + age)
            println("sal=" + sal)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    Console

    从屏幕上读取用户输入,然后继续进行进一步的处理。 以下示例程序显示如何从命令行读取输入。

    print("Please enter your input : " )
    val line = Console.readLine
     
    println("Thanks, you just typed: " + line)
    
    • 1
    • 2
    • 3
    • 4

    文件写入

    要在Scala中将文本写入文件,我们必须使用java.io对象

    //1.使用fileName创建一个新的PrintWriter / FileWriter对象。
    val writer = new PrintWriter(new File("test.txt" ))
    
    //2.使用write()函数写入文件。
    writer.write("Hello Scala")
    
    //3.完成写操作后,请使用close方法。
    writer.close()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    文件读取

    Source单例对象中, 提供了一些非常便捷的方法, 从而使开发者可以快速的从指定数据源(文本文件, URL地址等)中获取数据, 在使用 Source单例对象之前, 需要先导入source包, 即 import scala.io.Source

    Source.fromFile("test.txt" ).foreach(print)
    
    • 1
  • 相关阅读:
    基于数据中心多站融合的直流供电系统的研究
    如何通俗地理解合同矩阵
    【MySQL】库的操作
    赋安消防主机FS5050,波特率20k,单模单芯SC接头,9-36V直流供电的光纤联网方式之一
    Linux常用命令——常用网络命令【二】
    二手车价格预测 | 构建AI模型并部署Web应用 ⛵
    大数据培训课程WordCount案例实操
    【Java 进阶篇】深入理解SQL的数据操作语言(DML)
    Java实训:学生信息管理系统
    Echarts的配置修改
  • 原文地址:https://blog.csdn.net/weixin_47726676/article/details/126275330