Java小白入门到实战应用教程-Scanner类及IO流讲解
Scanner类
我们前面写的很多例子都是程序独自执行的,但是我们做编程写代码的目的是要实现能人和代码去交互的。
现在我们就来了解一个知识点,去实现最简单的人和程序的交互。
在java中通过Scanner类来获取用户在控制台的输入。
我们直接来看应用代码:
public class ScanDemo {
public static void main(String[] args) {
//创建Scanner 对象,监控控制台中键盘输入
Scanner scanner = new Scanner(System.in);
//获取输入的整型值
int i = scanner.nextInt();
System.out.println("用户控制台输入的值:"+i);
}
}
解释:我们通过上面的一段代码可以在控制台通过键盘输入一个整型的数字,然后打印了一下自己输入的数字。
Scanner类有很多方法,除了上面接收Int型整数的,还有接收字符串的、浮点数的等等。
public class ScanDemo {
public static void main(String[] args) {
//创建Scanner 对象,监控控制台中键盘输入
Scanner scanner = new Scanner(System.in);
//获取输入的整型值
int i = scanner.nextInt();
System.out.println("用户控制台输入的值:"+i);
//创建Scanner 对象,监控控制台中键盘输入
scanner = new Scanner(System.in);
//获取输入的整型值
String s = scanner.nextLine();
System.out.println("输入的字符串:"+s);
}
}
上面给大家介绍了Scanner如何使用,下面我们就可以结合一些我们前面学到的知识点,去实现一个人和程序交互的程序了。
我们来实现一个简单的计算器。
public class ScanDemo {
public static void main(String[] args) {
System.out.println("请输入第一个数:");
Scanner scanner = new Scanner(System.in);
int one = scanner.nextInt();
System.out.println("请输入第二个数:");
scanner = new Scanner(System.in);
int two = scanner.nextInt();
System.out.println("请输入加减乘除,分别是 + - * /:");
scanner = new Scanner(System.in);
String s = scanner.nextLine();
int res = 0;
switch (s){
case "+":
res = one + two;
break;
case "-":
res = one - two;
break;
case "*":
res = one * two;
break;
case "/":
res = one / two;
break;
}
System.out.println("最终结果为:"+ res);
}
}
运行程序:
请输入第一个数:
20
请输入第二个数:
5
请输入加减乘除,分别是 + - * /:
*
最终结果为:100
IO流
IO流是实现两个对象间传递数据的,我们在Java中所说的IO流的简单应用通常是用来读写文件的。
我在网上找了一张IO流结构的图片,来自菜鸟教程
在Java中IO流主要分为两类,分别时字符流和字节流,按字面意思,字节流就是按照二进制字节的方式读写数据,字符流就是按照字符的方式去读写数据。
下面我们还是直接写一些代码样例,演示IO流中的常用类如何使用。
字节流
public class IoDemo {
public static void main(String[] args) throws IOException {
//定义文件路径
String filePath = "E:\\j-file\\git\\eleven\\text.txt";
//创建文件输入流
FileInputStream inputStream = new FileInputStream(filePath);
//获取流的长度
int available = inputStream.available();
//通过循环的方式按字节的方式将文件中的内容读取出来
for (int i =0 ;i<available;i++){
System.out.print((char) inputStream.read() + " ");
}
//最终需要关闭流,不关闭的话资源不会释放
inputStream.close();
}
}
public class IoDemo {
public static void main(String[] args) throws IOException {
//定义文件路径
String filePath = "E:\\j-file\\git\\eleven\\text.txt";
//创建文件输出流
FileOutputStream outputStream = new FileOutputStream(filePath);
//定义要往文件中写的内容
String context = "这是内容";
//往文件输出,因为我们使用的FileOutputStream是字节输出流,所以我们定义的字符串需要先转成字节数组。
outputStream.write(context.getBytes(StandardCharsets.UTF_8));
//关闭流
outputStream.close();
}
}
字符流
public class IoDemo {
public static void main(String[] args) throws IOException {
//定义文件路径
String filePath = "E:\\j-file\\git\\eleven\\text.txt";
//创建字符输出
Writer out = new FileWriter(filePath);
String str = "输出的内容";
//将内容写到文件
out.write(str);
//释放资源
out.close();
}
}
public class IoDemo {
public static void main(String[] args) throws IOException {
//定义文件路径
String filePath = "E:\\j-file\\git\\eleven\\text.txt";
//创建字符输入
Reader reader = new FileReader(filePath);
int ch = 0;
char [] buf= new char[1024];
//通过这种方式一次读取一个字符
while((ch=reader.read(buf))!=-1){
System.out.print(new String(buf,0,ch));
}
reader.close();
}
}