Java学习day007 输入输出

使用的教材是java核心技术卷1,我将跟着这本书的章节同时配合视频资源来进行学习基础java知识。

day007  输入输出

主要是需要熟悉Java程序设计语言,因此只学习简单的用于输入输出的控制台就可以了。


1.读取输入

打印输出到“标准输出流”(即控制台窗口)是一件非常容易的事情,只要调用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();

要想读取一个整数,就调用nextlnt方法。

System.out.println("Hello old are you?");
int age = in.nextInt();

与此类似,要想读取下一个浮点数,就调用nextDouble方法。

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

import java.util.Scanner;

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

将上面的内容写成下面的程序:

import java.util.Scanner;

public class He {
	public static void main(String[] args)
	{
		Scanner in = new Scanner(System.in);
		//第一次输入
		System.out.print("what is your name?");
		String name = in.nextLine();
		//第二次输入
		System.out.println("Hello old are you?");
		int age = in.nextInt();
		//输出
		System.out.println("Hello,"+name+".Next year,you'll be"+(age+1));	
	}
}

运行的结果:

Java学习day007 输入输出_第1张图片

可以看一下API中的Scanner类:

Java学习day007 输入输出_第2张图片

因为输入是可见的,所以Scanner类不适用于从控制台读取密码。


2.格式化输出

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

double x = 10000.0/3.0;
System.out.print(x);

//会输出
//3333.3333333333335

如果希望显示美元、美分等符号,则有可能会出现问题。

System.out.print("%8.2f",x);

上面这种调用8个字符的宽度和小数点后两个字符的精度打印x。也就是说,打印输出一个空格和7个字符。

输出:3333.33

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

System.out.printf("Hello,%s,Next year,you'll be %d",name,age);

每一个以%字符开始的格式说明符都用相应的参数替换。格式说明符尾部的转换符将指示被格式化的数值类型:f表示浮点数,s表示字符串,d表示十进制整数。

Java学习day007 输入输出_第3张图片

另外,还可以给出控制格式化输出的各种标志。

Java学习day007 输入输出_第4张图片

例如,逗号标志增加了分组的分隔符。

即    System.out.printf("%,.2f",10000.0/3.0);       打印   3,333.33

可以使用多个标志,例如,“%,(.2f”使用分组的分隔符并将负数括在括号内。

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

String message = String.format("Hello, %s. Next year, you'll be %d", name, age);

          Java学习day007 输入输出_第5张图片


3.文件输入与输出

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

Scanner in = new Scanner(Paths.get("myfile.txt"), "UTF-8");

如果文件名中包含反斜杠符号,就要记住在每个反斜杠之前再加一个额外的反斜杠:“c:\\mydirectory\\myfile.txt”。

Java学习day007 输入输出_第6张图片

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

PrintWriter out = new PrintWriter("myfile.txt", "UTF-8");

如果文件不存在,创建该文件。可以像输出到System.out—样使用print、println以及printf命令。

Java学习day007 输入输出_第7张图片

需要注意的是:可以构造一个带有字符串参数的Scanner,但这个Scanner将字符串解释为数据,而不是文件名。文件位于Java虚拟机启动路径的相对位置。

如果用一个不存在的文件构造一个Scanner,或者用一个不能被创建的文件名构造一个PrintWriter,那么就会发生异常。


学习过较多编程语言的同学很容易将这些语言的输入输出搞混乱,这一块需要熟记。

 

你可能感兴趣的:(Java基础学习)