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

为什么我的程序跳过替换方法?[副本]

章鸿光
2023-03-14

每当我运行下面的java代码时,它都会编译,但包含替换方法的行似乎被跳过,因此输入的字符串和输出(newMessage)是相同的。为什么?变量 C 和变量 D 是字符...

进口java.util.Scanner;

public class javaencrypt
{
    public static void main(String[] args)
        {
            // define and instantiate Scanner object
            Scanner input = new Scanner(System.in);

            //prompt user to enter a string
            System.out.println("Please enter a string: ");
            String message = input.nextLine();
            String newMessage = message;
            char c=' '; // the character at even locations
            char d=' '; // new character
            // go throughout the entire string, and replace characters at even positions by the character shifted by 5.
            // access the even characters with a for loop starting at 0, step 2, and ending at length()-1
            // for( initial value; maximum value; step)
            for(int k=0; k<message.length(); k=k+2)
            {
                c=message.charAt(k);
                d=(char)(c+5);
                /*
                    there will always be characters available, because keyboard is mapped on ASCII which is in the beginning of UNICODE
                */
                newMessage.replace(c,d);
            }
            System.out.println("Message replacement is: " + newMessage);
        }
}

共有1个答案

洪伟兆
2023-03-14

Java,字符串是不可变的。

不可变类只是一个其实例不能被修改的类。创建实例时,实例中的所有信息都被初始化,并且不能修改这些信息。

当您调用新消息时,替换(c, d); 这不会更新新消息,而是创建一个新的字符串,并将所有字符 c 替换为 d。如果您希望新消息更改为包括将 c 替换为 d,则需要重新分配变量。这看起来像新消息 = 新消息.

 类似资料:
  • 我目前有一个问题,一个'而'循环不执行。如果输入文本文件有下一行,我将循环条件设置为true。然而,当我执行我的程序时,循环没有运行。我通过添加一个“System.out.println(text)”来确认这一点,正如我所怀疑的,没有产生任何文本。 什么问题导致循环无法执行?

  • 我读过List.of和Arrays.AsList之间的区别是什么? 我不明白的是,在我的Maven pom.xml中进行了一些依赖项升级之后,为什么我的所有 不再编译。当我在IntelliJ中键入时,autocomplete只会出现成员。我想也许我没有导入?所以显式地指定了它,但仍然: 为什么我好像不能用?我一定是在做傻事...

  • 为什么throw new SkipException()会跳过所有类中的所有方法? 第一类有一个失败的方法,因此该类中的其余方法将被跳过,并且跳过计数器设置为0。 类2应该执行所有方法,并且所有方法都应该在类2中传递,因为跳过计数器设置为0并且在类1执行之后。 下面的代码似乎跳过所有方法,即使只有一个assert.fail包含在类1中? 测试基地: 测试1: 测试2: 控制台输出: 测试执行XML

  • 我想我的程序跳过了while循环,但我真的不确定到底发生了什么。该函数应该通过找到GCD,然后将分子和分母除以该数字来减少分数。 我得到分子和分母的绝对值,以确保如果分数是负数,我会在最后保持它。如果分子为0,则要求我返回(0,1)。问题是关于while循环。。。似乎它被完全跳过了。有什么建议吗?

  • 我现在有点困惑。我试过: 得到: 然而,我想要: 我的代码怎么了?