当前位置: 首页 > 知识库问答 >
问题:

JAVA用键盘输入的int替换字符串中的char

池麒
2023-03-14

我是大学一年级的学生,正在攻读软件工程学位。所以我在java课程中有一个任务,我必须加密一个6位数的密码并显示给用户,其中一个步骤是用第二位数的余数除以2来替换第二位数。我试图使用替换方法,但它给我一个错误,说我不能用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. 显示欢迎信息
  2. 询问用户输入的号码
  3. 使用常量变量将输入值存储在程序中
  4. 显示加密的数字,这相当于
  1. 交换第一位和第六位数字
  2. 将第二个数字替换为第二个数字的剩余部分除以2
  3. 在输入的第三位数字上加1。请注意,如果第三个数字是“9”,则第三个数字在步骤3)之后将是“0”,并且步骤3)中的其他数字没有进一步更改。提示:使用步骤3)后第三位数的余数除以10来处理可能的溢出
  4. 用第三位数的剩余部分除以3替换第四位数
  5. 交换第4位和第5位。)

共有1个答案

仲孙宇定
2023-03-14

您必须将int转换为char。这两种数据类型不兼容,主要是因为int是32位宽的,而chars只有16位宽。要解决这个问题,您必须首先将int转换为char,然后执行相反的操作。

另外,在创建新的字符串

int digit = c[1];
char remainder = (char)(digit % 2);
c[1] = remainder;
// Add 1 to the third digit of your input
// Replace the fourth digit with the remainder of the third digit divided by 3.
// Swap the 4th and 5th digits.
String password = new String(c);

更新:

在OPs对我的帖子发表评论后,我意识到我的答案没有根据最初的问题陈述正确地框定。

现在假设您从一个包含NUMERIC字符(即“123456”)的String开始。然后,根据指令操作这些数字中的每一个。因此,当执行步骤2时,结果必须是NUMERIC值0或1必须添加到该char数组索引中。

如果以上是正确的,那么解决方案很简单:

System.out.println("Enter a 6-digits passsword: ");
final String password = keyboard.nextLine(); // assume "123456"
System.out.println("encrypting your password:");
char[] c = password.toCharArray(); // {'1', '2', '3', '4', '5', '6'} 

// swap first and last characters
char temp = c[0];
c[0] = c[5];
c[5] = temp; // c = {'6', '2', '3', '4', '5', '1'}

// Replace the second digit with the remainder of the second digit divided by 2
int digit = Integer.parseInt(s.substring(2, 3)); // Takes second digit and converts it to a number
c[1] = String.valueOf(digit % 2).charAt(0); // calculate mod 2 and converts it to a char --> c = {'6', '0', '3', '4', '5', '1'}

必须遵循类似的方法来操作数组中的其余字符。完成所有步骤后,只需基于char数组创建一个新的String。有两种方法可以做到这一点:

String encodedPwd = String.valueOf(c); // recommended
String encodedPwd = new String(c); // Discouraged
 类似资料:
  • 问题内容: 我正在尝试在Java控制台应用程序中输入信息,但似乎无法运行它。 这是我的Java文件的样子: 但是我得到了错误: 我的源文件夹中有一个keyboard.class文件。我将Eclipse与Ubuntu结合使用。 问题答案: 表示无法编译代码。 您必须导入Keyboard,类似 当您使用不同包中的类(不是当前类的同一包)时,必须导入该类。如果该类也位于同一包中,则无需导入。 通常将类分

  • 主要内容:输入单个字符,输入字符串,总结C语言有多个函数可以从键盘获得用户输入,它们分别是: scanf():和 printf() 类似,scanf() 可以输入多种类型的数据。 getchar()、getche()、getch():这三个函数都用于输入单个字符。 gets():获取一行数据,并作为字符串处理。 scanf() 是最灵活、最复杂、最常用的输入函数,上节我们已经进行了讲解,本节接着讲解剩下的函数,也就是字符输入函数和字符串

  • 问题内容: 我目前有一个包含字符A,B和C的字符串,例如,该字符串看起来像 其他不包含A,B或CI的随机变量想分别用“ A”,“ B”和“ C”替换A,B和C,这是我目前正在做的最好方法: 问题答案: 如果A,B和C是完全相同的单个字符,cletus的答案就可以正常工作,但是如果它们可以是更长的字符串,而您只是出于示例目的将它们称为A,B和C,则cletus的答案就可以。如果它们是更长的字符串,则

  • 本文向大家介绍替换Java字符串中的子字符串,包括了替换Java字符串中的子字符串的使用技巧和注意事项,需要的朋友参考一下 假设以下是我们的字符串。 我们想将子字符串“ Dead”替换为“ Alive”。为此,让我们使用以下逻辑。在这里,我们使用了while循环,并在其中找到了要替换的子字符串的索引。这样,我们一个接一个地替换了整个子字符串。 以下是替换子字符串的完整示例。 示例 输出结果

  • 主要内容:replace() 方法,replaceFirst() 方法,replaceAll() 方法在 Java 中,String 类提供了 3 种字符串替换方法,分别是 replace()、replaceFirst() 和 replaceAll(),本文将详细介绍它们的使用方法。 replace() 方法 replace() 方法用于将目标字符串中的指定字符(串)替换成新的字符(串),其语法格式如下: 其中,oldChar 表示被替换的字符串;newChar 表示用于替换的字符串。repla

  • 问题内容: 我有一些带有以下格式的方程式的字符串。 我还有一个文本文件,其中包含每个变量的名称,例如: 等等… 什么是对我来说,写代码的最佳方式,使其在插头到处发生,并且对等? 问题答案: 对于string ,请使用以下函数: