有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

为什么我的for循环在Android studio中与eclipse(java)产生不同的结果

我将eclipse项目中的一些代码复制并粘贴到安卓 studio java文件中。我修正了任何变量声明以适应安卓 studio,但我的代码执行的并不相同。特别是我的for循环:

 int z = 0;
 for (int i = 0;i < translatable.length;i++){
      translatable[i] = Chars[z] + Chars[z+1];
      z+=2;
 }

在eclipse中使用时,如果输入matthew,它将返回:

妈 tt 他 wz

但在我的安卓 studio应用程序中使用时,它会返回:

m 在 th 电子战

*我制作了一个playfair密码,我正在尝试将其转换为安卓应用程序

为了添加更多的上下文,我还将添加前面的代码,在其中我认为可以很好地工作,但只是为了防止有人能够发现im没有的东西:

encrypt.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String[][] key = new String[5][5];
            String[] filler =
                    {
                            "a","b","c","d","e",
                            "f","g","h","i","k",
                            "l","m","n","o","p",
                            "q","r","s","t","u",
                            "v","w","x","y","z"
                    };


            String txt = text.getText().toString();


            String[] words = txt.split(" ");

            int alphNum = 0;
            String joinTxt ="";

            for (int i = 0; i < words.length;i++){

                if(words[i].length() % 2 != 0){

                    words[i] = words[i] + "z";

                    alphNum = alphNum + words[i].length();
                    joinTxt = joinTxt + words[i];


                } else {

                    alphNum = alphNum + words[i].length();
                    joinTxt = joinTxt + words[i];

                }
            }

            String[] Chars = joinTxt.split("");

            String[] translatable = new String[Chars.length / 2];

            int z = 0;
            for (int i = 0;i < translatable.length;i++){
                translatable[i] = Chars[z] + Chars[z+1];
                z+=2;
            }

我发现很难理解为什么我会遇到这个问题,也不理解其中的逻辑。如果有人能给我指出正确的方向,那就太好了,因为完全相同的代码在另一个IDE中也可以正常工作。很抱歉我的命名习惯

编辑:在做了更多的调试之后,我发现我错误地认为我的for循环是这个问题的根源

使用的每个split语句都会留下一个前导的空数组项,使用必要的方法似乎无法摆脱它们。通过从1而不是0建立索引,我成功地解决了这个问题。我将对拆分方法进行更多研究,以及为什么会发生这种情况。谢谢你的帮助


共 (1) 个答案