java 实验9 第五题 修正贴

对于重要文件通常需要进行加密处理,请编写程序实现对文本文件的加密,密码表如下,明文如果是大写字母则密文也为密码表对应大写字母,明文如果是小写字母则密文也为密码表对应小写字母。

明文

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

上次的错误在于转换后没有退出,每次密文进行转换后要退出,不然字母将转换好几次。

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.Scanner;

public class Test5 {

	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("C:\\Dell\\Test5.txt"));
		FileReader fr = new FileReader(new File("C:\\Dell\\Test5.txt"));
		Scanner in = new Scanner(System.in);
		String str = in.nextLine();
		char[] a = str.toCharArray();// 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] - 32后成对应的ASCII码 因此要强制类型转换
						a[n] = (char) (fake[i] + 32);//将大写的密文转换成小写
					    break;
					}
				}
			}
		}
		fw.write(a);

		in.close();
		fw.close();
		fr.close();
	}

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

文哲爱学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值