美文网首页
java学习(四) 基本程序设计结构(三)——输入输出、控制流程

java学习(四) 基本程序设计结构(三)——输入输出、控制流程

作者: 大黄菌 | 来源:发表于2016-08-11 21:32 被阅读0次
    输入输出(通过控制台)

    读取“标准输入流”:

    1.构建Scanner对象(定义在java.util包中),并与“标准输入流”System.in关联:
    Scanner in = new Scanner(System.in);
    2.使用Scanner类的各种方法实现输入操作,如nextLine方法(输入行中可以有空格):
    String aLine = in.nextLine;
    想要读取一个单词(以空白符为分隔符),调用next方法;
    想要读取一个整数,调用nextInt方法;浮点数同理;
    boolean hasNext()检测输入中是否还有其他单词。

    格式化输出:

    java SE 5.0沿用了C语言库函数中的printf方法:
    System.out.printf("Hello, %s. Next year, you 'll be %d", name ,age);
    System.out.printf("%fc", new Date()); 这条语句将完整打印当前的日期和时间。

    用于printf的转换符、用于printf的标志、日期和时间的转换符等信息查阅书本(p57-p60)。

    文件输入与输出:

    要想对文件进行读取,需要用File对象构建一个Scanner对象:
    Scanner in = new Scanner(Paths.get("myfile.txt"));
    如果文件名中包含反斜杠符号,要在每个反斜杠之前再加一个额外的反斜杠,例如:“c:\mydirectory\myfile.txt”。之后用前面介绍的Scanner类的方法对文件进行读取。
    如果用一个不存在的文件构建一个Scanner,或者用一个不能被创建的文件名构造一个PrintWriter,就会发生异常。

    要想写入文件,需要构建一个PrintWriter对象。在构造器中,只需要提供文件名:
    PrintWriter out = new PrintWriter("myfile.txt");
    如果文件不存在,创建该文件。可以像输出到System.out一样使用print、println、printf命令。

    控制流程

    多重选择:switch语句

    switch(choice){ case 1: ... break; case 2: ... break; default: ... break; }
    如果在case分支语句的末尾没有break语句,就会接着执行下一个case分支语句。

    for each循环

    for(variable:collection) statement定义一个变量用于暂存集合中的每一个元素,并执行相应语句。例如:
    for(int element:a) System.out.println(element); //打印数组a的每一个元素,一个元素占一行。
    遍历数组中的每个元素时,for each循环语句的循环变量不需要使用下标值。
    想要访问二维数组a的所有元素,需要使用两个嵌套的循环。

    中断控制流程语句

    java提供了一种带标签的break语句,用于跳出多重嵌套的循环语句。标签必须放在希望跳出的最外层循环之前,并且必须紧跟着一个冒号。示例为if语句:
    label: { ... if(condition) break label; //exits block ... }

    continue语句将控制转移到最内层循环的首部。如果将continue语句用于for循环中,就可以跳到for循环的“更新”部分。

    大数值

    如果基本的整数和浮点数精度不能够满足需求,那么可以使用java.math包中的两个类:BigInteger和BigDecimal。BigInteger类实现了任意精度的整数运算,BigDecimal实现了任意精度的浮点数运算。
    使用静态的valueOf方法可以将普通的数值转化为大数值:
    BigInteger a = BigInteger.valueOf(100);
    处理大数值不能用运算符,而需要使用大数值类中的add和multiply方法:
    BigInteger d = c.multiply(b.add(BigInteger.valueOf(2))); //d = c * (b+2)

    数组

    和C++不同,java中习惯在声明时把数组类型和变量名分开,如:int[] a;
    在java中,允许数组长度为0(与null不同)。

    数组拷贝

    在java中,允许将一个数组变量拷贝给另一个数组变量。这时,两个变量将引用同一个数组:
    int[] a = b;
    a[4] = 12; //now b[4] is also 12
    如果希望将一个数组的所有值拷贝到一个新的数组中去,就要使用Arrays类的copyOf方法。

    命令行参数

    每一个java应用程序都带有一个带String arg[]参数的main方法。这个参数表明main方法将接收一个字符串数组,也就是命令行参数。

    Arrays类的常用方法

    static void sort(type[] a) 采用优化的快速排序算法对数组进行排序。
    static int binarySearch(type[] a, int start, int end, type v) 采用二分搜索算法查找值v(与a的数据元素类型相同)。如果查找成功,则返回相应的下标值;否则,返回一个负数值r。-r-1是为保持a有序v应插入的位置。
    static boolean equals(ttype[] a, type[] b) 如果两个数组大小相同,并且下标相同的元素都对应相等,返回true。

    多维数组

    java实际上没有多维数组,只有一维数组。多维数组被解释为“数组的数组”。因此,java中可以构建“不规则”数组。

    相关文章

      网友评论

          本文标题:java学习(四) 基本程序设计结构(三)——输入输出、控制流程

          本文链接:https://www.haomeiwen.com/subject/gnxssttx.html