实验目的
- 了解异常的概念和异常处理机制
- 掌握捕捉异常的方法
- 掌握创建自定义异常
实验学时 2学时
输入输出流
实验目的
1.理解Java技术体系中“流”的概念。
2.掌握System.in和System.out的基本使用方法
3.掌握字节流和字符流的常用类及使用方法。
4.掌握Java程序对文件的基本操作。
实验学时 4学时
实验内容
- 设计一个程序,输入两个整数和一个算术运算符(+、-、*、/),根据运算符,计算两个整数的运算结果。考虑到用户输入的数据不合法,需要捕获异常(数据格式异常、除零异常、非法运算符异常)。
-
package 实验八; import java.util.Scanner; import java.util.InputMismatchException; //导入输入不匹配异常 public class Sy3 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(System.in); int a,b; String c; try { //选定捕获异常的范围 System.out.println("请输入需要计算的两个整数:"); a=in.nextInt(); b=in.nextInt(); System.out.println("请输入运算符:"); c=in.next(); switch(c) { case "+": System.out.println(a + c + b +"="+(a+b)); break; case "-": System.out.println(a + c + b +"="+(a-b)); break; case "*": System.out.println(a + c + b +"="+(a*b)); break; case "/": System.out.println(a + c + b +"="+(a/b)); break; default: throw new Exception(); //声明抛弃异常 } }catch(InputMismatchException e) { //处理数据不匹配异常 System.out.println("数据格式异常!"); }catch(ArithmeticException e) { //处理除0异常 System.out.println("除0异常!"); }catch(Exception e) { //处理default语句中抛弃的非法运算符异常 System.out.println("非法运算符异常!"); } } }
1.编写程序使用System.in对象的read()方法读取键盘输入,当程序运行时,首先询问需要输入的数据个数,然后依次输入指定个数的整数,输入完毕后,输出所有输入整数的和。
-
package 实验九; import java.io.BufferedReader; //带缓冲功能的字符输入流 import java.io.IOException; import java.io.InputStreamReader; //字节流向字符流转化的流 public class Sy1 { public static void main(String[] args)throws NumberFormatException,Exception { // TODO 自动生成的方法存根 int a[]=new int[512]; //创建一个接收键盘输入数据的输入流 int sum=0; InputStreamReader c = new InputStreamReader(System.in); //输入流放入缓冲流 BufferedReader d = new BufferedReader(c); System.out.println("请输入数的总数:"); int n=Integer.parseInt(d.readLine()); //转换为基本数据类型int System.out.println("这些数分别是:"); for(int i=0;i<n;i++) { int b=Integer.parseInt(d.readLine()); a[i]=b; sum+=a[i]; } System.out.println("所有输入的数和为:"+sum); } }
- 在电脑D盘创建一个名为FileList的文本文件,将D盘下所有文件及文件夹名称保存到这个文件中。
-
package 实验九; import java.io.File; import java.io.FileWriter; public class Sy2 { public static void main(String[] args) { // TODO 自动生成的方法存根 try { File f=new File("D:\\FileList"); if(!f.exists()){//如果不存在 f.createNewFile(); //创建一个文本文件 } else { System.out.println("文件已存在"); } File file=new File("D:\\"); File[] fs=file.listFiles(); FileWriter out = new FileWriter(f); for(File fs1 : fs) { out.write(fs1.getPath()+'\r'+'\n'); } out.close(); }catch(Exception e) { e.printStackTrace(); } } }
5.对于重要文件通常需要进行加密处理,请编写程序实现对文本文件的加密,密码表如下,明文如果是大写字母则密文也为密码表对应大写字母,明文如果是小写字母则密文也为密码表对应小写字母。
-
明文
A
B
C
D
E
F
G
H
I
J
K
L
M
密文
T
O
I
A
N
D
E
G
H
Z
B
K
F
明文
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
密文
J
M
C
L
P
Y
V
X
Q
R
W
U
S
-
package 实验九; import java.io.File; import java.io.FileReader; //文件字符输入流 import java.io.FileWriter; //文件字符输出流 import java.util.Scanner; public class Sy5 { public static void main(String[] args) throws Exception { char reality[] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' }; char fake[] = { 'T', 'O', 'I', 'A', 'N', 'D', 'E', 'G', 'H', 'Z', 'B', 'K', 'F', 'J', 'M', 'C', 'L', 'P', 'Y', 'V', 'X', 'Q', 'R', 'W', 'U', 'S' }; //创建两个数组,分别填入字母以及加密后的密文 FileWriter fw = new FileWriter(new File("D:\\FileList")); FileReader fr = new FileReader(new File("D:\\FileList")); //对实验2中创建的文件进行加密 Scanner in = new Scanner(System.in); String str = in.nextLine(); char[] a = str.toCharArray(); //将字符串转换为字符数组 for (int n = 0; n < a.length; n++) { for (int i = 0; i < 26; i++) { if (a[n] == reality[i]) { //加密字母 a[n] = fake[i]; break; } else if (a[n] <= 'z' && a[n] >= 'a') { //小写字母转换为大写字母 if (reality[i] == (char) (a[n] - 32)) { //强制类型转换 a[n] = (char) (fake[i] + 32); //将大写密文转换成小写 break; } } } } fw.write(a); in.close(); fw.close(); fr.close(); } }