Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 试着学习;“一封信”;加密技术_Java - Fatal编程技术网

Java 试着学习;“一封信”;加密技术

Java 试着学习;“一封信”;加密技术,java,Java,这是家庭作业的一小部分,我必须扫描整个文本文件并加密/解密整个内容,但我认为在我开始尝试使用多个单词之前,我应该能够理解基本知识 我试图弄明白为什么我的代码只改变我试图加密的单词的最后一个字母,而不是整个单词的每个字母 代码: import java.util.*; 公共类加密机 { 公共静态void main(字符串[]args) { 扫描仪输入=新扫描仪(系统输入); 字串=”; char ch=“”; System.out.println(“您想要加密什么单词”); word=in.nex

这是家庭作业的一小部分,我必须扫描整个文本文件并加密/解密整个内容,但我认为在我开始尝试使用多个单词之前,我应该能够理解基本知识

我试图弄明白为什么我的代码只改变我试图加密的单词的最后一个字母,而不是整个单词的每个字母

代码:

import java.util.*;
公共类加密机
{
公共静态void main(字符串[]args)
{
扫描仪输入=新扫描仪(系统输入);
字串=”;
char ch=“”;
System.out.println(“您想要加密什么单词”);
word=in.nextLine();
//加密字

对于(int i=0;i您正在将
word.charAt(i);
赋值给
ch
,然后递增
ch
。但是这不会更改
word
的值。为此,您可以执行以下操作:

Scanner in = new Scanner(System.in);
String word = "";
StringBuilder encrypedWordSB = new StringBuilder();

System.out.println("What word do you want to encrypt");
word = in.nextLine();

// Encrypt word
for (int i = 0; i < word.length(); i++) {
    char ch = word.charAt(i);
    ch++;

    encrypedWordSB.append(ch);
}

System.out.println(encrypedWordSB);
Scanner-in=新的扫描仪(System.in);
字串=”;
StringBuilder encrypedWordSB=新StringBuilder();
System.out.println(“您想要加密什么单词”);
word=in.nextLine();
//加密字
for(int i=0;i

在上面的例子中,我们在
for
循环中加密字符
ch
,然后将加密字符附加到字符串中。在
for
循环之后,我们得到字符串
encryptedWord
和所有加密字符。

您正在分配
word.charAt(i);
ch
,然后递增
ch
。但是这不会更改
word
的值。为此,可以执行以下操作:

Scanner in = new Scanner(System.in);
String word = "";
StringBuilder encrypedWordSB = new StringBuilder();

System.out.println("What word do you want to encrypt");
word = in.nextLine();

// Encrypt word
for (int i = 0; i < word.length(); i++) {
    char ch = word.charAt(i);
    ch++;

    encrypedWordSB.append(ch);
}

System.out.println(encrypedWordSB);
Scanner-in=新的扫描仪(System.in);
字串=”;
StringBuilder encrypedWordSB=新StringBuilder();
System.out.println(“您想要加密什么单词”);
word=in.nextLine();
//加密字
for(int i=0;i

在上面的示例中,我们在
for
循环中加密字符
ch
,然后将加密字符附加到字符串中。在
for
循环之后,我们得到了包含所有加密字符的字符串
encryptedWord

因此,在代码中发生的事情是,在for循环中,选择在该索引处显示图表并增加它。但这就是您在循环中所做的一切,您不会在任何地方保存或显示它。因此,当循环的下一次迭代出现时,它会覆盖此值。然后在循环后显示结果,因为最后一个字母是您显示的迭代过程的最后一个字母


您可以通过在循环之前创建一个空字符串来解决此问题,并在迭代中将每个字符添加到此字符串中。然后在循环之后显示此字符串。

因此,您的代码中发生的是,在for循环中,选择该索引处的图表并将其增加。但这就是您在循环中所做的所有操作,您不保存或显示该字符串将其放置在任何位置。因此,当循环的下一次迭代出现时,它将覆盖此值。然后在循环之后显示结果,因为最后一个字母是最后一个字母,所以迭代过程就是您显示的


您可以通过在循环之前创建一个空字符串来解决此问题,并在迭代中将每个字符添加到此字符串中。然后在循环之后显示此字符串。

我承认这是一个“基本”/“学习者”,但我仍然建议使用
StringBuilder
而不是
string
串联,但这就是我;)很公平!我已经更新了答案,这也是一个学习的好主意。我承认这是一个“基本”/“学习者”,但我仍然建议使用
StringBuilder
over
String
concatenation,但这就是我;)很公平!我已经更新了答案,这也是一个学习的好主意。