为什么我的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 楼答案
使用
而不是
请阅读:
Why in Java 8 split sometimes removes empty strings at start of result array?
及
Behaviour of String.split in java 1.6?