您的位置:首页 > 编程语言 > Java开发

Java核心技术第3章(4)

2015-09-27 11:10 423 查看

3.7 输入输出

打印输出到"标准输出流"(即控制台窗口),只需调用System.out.println即可.然而,读取"标准输入流"System.in就没有那么简单了.要想通过控制台进行输入,首先需要构造一个Scanner对象,并与"标准输入流"System.in关联.

Scanner in = new Scanner(System.in);
现在,就可以使用Scanner类的各种方法实现输入操作了.例如,nextLine方法将输入一行.

System.out.print("what is your name?");
String name = in.nextLine();
在这里,使用nextLine方法是因为在输入行中有可能包含空格.要想读取一个单词(以空白符为分隔符),就调用

String firstName = in.next();
要想读取一个整数,就调用nextInt方法

System.out.print("how old are you?");
int age = in.nextInt();
与此类似,要想读取下一个浮点数,就调用nextDouble方法.

最后,在程序的最开始添加上一行:

import java.util.*;
Scanner类定义在java.util包中.当使用的类不是定义在基本java.lang包中时,一定要使用import指示字符将相应的包加载进来.

InputTest.java如下所示:

import java.util.*;

/**
 * This program demonstrates console input
 */
public class InputTest
{
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);

        // get first input
        System.out.print("what is your name?");
        String name = in.nextLine();

        // get second input
        System.out.print("how old are you?");
        int age = in.nextInt();

        // display output on console
        System.out.println("hello, " + name + ", Next year,you'll be " + (age + 1));
    }
}
java.util.Scanner的方法有如下:

Scanner(InputStream in);
用给定的输入流创建一个Scanner对象

String nextLine()
读取输入的下一行内容

String next()
读取输入的下一个单词(以空格作为分隔符)

int nextInt()
double nextDouble()
读取并转换下一个表示整数或浮点数的字符序列

boolean hasNext()
检测输入中是否还有其他单词

boolean hasNextInt()
boolean hasNextDouble()
检测是否还有表示整数或浮点数的下一个字符序列

3.7.2 格式化输出

可以使用System.out.print(x)将数值x输出到控制台上,这条命令将以x对应的数据类型所允许的最大非0数字位数打印输出x,例如:

double x = 1000.0 / 3.0;
System.out.print(x);
打印

333.33333333335

Java沿用了C语言库函数中的printf方法,例如调用

System.out.printf("%8.2f", x);
就可以用8个字符的宽度和小数点后两个字符的精度打印x.

在printf中,可以使用多个参数,例如:

System.out.printf("hello, %s, next year, you'll be %d", name, age);
每一个以%字符开始的格式说明符都用相应的参数替换.

另外,还可以给出控制格式化输出的各种标志.例如,逗号标志增加了分组的分隔符.

可以使用静态的String.format方法创建一个格式化的字符串,而不打印输出:

String message = String.format("hello, %s, Next year, you'll be %d"

3.7.3 文件输入与输出

要想对文件进行读取,就需要一个用File对象构造一个Scanner对象,如下所示:

Scanner in = new Scanner(Path.get("myfile.txt"));
如果文件名中包含反斜杠符号,就要记住在每个反斜杠之前再加上一个额外的反斜杠:"c:\\mydirctory\\myfile.txt".

要想写入文件,就需要构造一个PrintWriter对象.在构造器中,只需要提供文件名:

PrintWriter out = new PrintWriter("myfile.txt");
如果文件名不存在,创建该文件.

注释:如果在命令行方式下用下列命令启动程序:

java MyProg
启动路径就是命令解释器的当前路径.

如果已经知道有可能出现"找不到文件"的异常,就应该告知编译器.需要在main方法中使用throws子句标记,如下所示:

public static void main(String[] args) throw FileNotFoundException
{
    Scanner in = new Scanner(Paths.get("myfile.txt");
}
注释:当采用命令行方式启动一个程序时,可以利用重定向将任意文件捆绑到System.in和System.out:

java MyProg < myfile.txt > output.txt
这样,就不必担心处理FileNotFoundException异常了.

java.util.Scanner的相关方法如下:

Scanner(File f);
构造一个从给定文件读取数据的Scanner

Scanner(String data)
构造一个从给定字符串读取数据的Scanner

PrintWriter(String fileName)
构造一个将数据写入文件的PrintWriter.文件名由参数指定
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: