【发布时间】:2021-02-04 16:05:43
【问题描述】:
我是一名大学新生,攻读软件工程学位。 所以我在java课程中有这个作业,我必须加密一个6位密码并将其显示给用户,其中一个步骤是 用第二个数字除以 2 的余数替换第二个数字。 我尝试使用 replace 方法来做,但它给了我一个错误,说我不能用 int 替换 char,这是我的代码:
public class Assignment1 {
public static void main(String[] args) {
System.out.println("Welcome to the Password encrypter. ");
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter a 6-digits passsword: ");
final String password = keyboard.nextLine();
System.out.println("encrypting your password:");
char[] c = password.toCharArray();
char temp = c[0];
c[0] = c[5];
c[5] = temp;
String password1 = new String(c);
char char2 = password1.charAt(1);
int remainder = char2 % 2;
String password2 = password1.replace(char2, remainder);
}
}
(如果有人感兴趣,这里是完整的练习: 问题 1 - 密码加密(4 分) 编写一个完整的程序,要求用户提示一个 6 位数字并输出 加密密码。 你的程序应该表现如下:
- 显示欢迎消息。
- 询问用户输入的数字。
- 在程序中使用常量变量来存储输入值。
- 显示加密后的数字,相当于
- 交换第 1 位和第 6 位数字
- 用第二个数字除以 2 的余数替换第二个数字。
- 将输入的第三位加 1。请注意,如果第三个数字是“9”,则第三个数字将 步骤 3) 后为“0”,步骤 3) 中的其他数字没有进一步变化。暗示: 使用步骤 3) 之后的第三个数字的余数除以 10 来处理可能的 溢出。
- 将第四位数字替换为第三位数字除以 3 的余数。
- 交换第 4 位和第 5 位数字。 )
【问题讨论】:
-
在构造新字符串之前替换
c数组中的第二个字符。不要尝试在字符串中替换它,因为这将替换所有出现的相同数字。 -
另外,
String#replace(...)替换所有匹配的子字符串,而不仅仅是那个字符。自己阅读 Javadoc docs.oracle.com/javase/7/docs/api/java/lang/… -
既然你正在学习,我建议你总是去 Javadoc 寻找你想使用的类方法,然后弄清楚它的作用。不要只看名字。我之前的评论应该已经教会了你这一课。
标签: java