for (int i=0; i<Intlength; i++){
int intPosition;
intPosition=strAlphabet.indexOf(strMessage.charAt(i));
System.out.println(intPosition);
System.out.println("BREAK");
for (int k=0; k<Intlength2; k++){
int intPosition2;
intPosition2=strAlphabet.indexOf(strKeyword.charAt(k));
System.out.println(intPosition2);
System.out.println("BREAK-------------");
}
}
我会要求用户输入两个词。一个是消息,一个是关键字。
上面的第一个循环将检查我是否 将加 1,并打印出第一个字母的位置编号。例如,如果消息是“红色”。我首先希望它输出“r”的位置编号,即 17。然后它必须移动到第二个循环,并对关键字执行完全相同的操作。例如,如果关键字是“cat”,我希望它打印第一个字母的第一个字母位置,在这种情况下“c”的位置值为 2。这样我希望输出是这样的:
消息首字母位置
关键词首字母位置
消息的第二个字母位置
关键字的第二个字母位置
等等
因此坚持消息“red”和关键字“cat”,我希望这样的输出:
17
2
4
0
3
19
我添加了中断文本来区分我的编码发生了什么,这就是结果。
Please give me a message:
red
Thank you! Now please give me a keyword:
cat
17
BREAK
2
BREAK-------------
0
BREAK-------------
19
BREAK-------------
4
BREAK
2
BREAK-------------
0
BREAK-------------
19
BREAK-------------
3
BREAK
2
BREAK-------------
0
BREAK-------------
19
BREAK-------------
如您所见,它会输入消息的第一个字母位置,然后是关键字的所有三个位置,然后进入消息的第二个位置字母,然后再次输出关键字的所有三个位置值。 我该如何解决这个问题以获得我想要的输出,我确定我没有正确编写 forloop。
最佳答案
您得到的是嵌套的 for 循环,以使其执行您建议的操作,它们只需要一个接一个,而不是彼此嵌套。当您将第二个 for 循环放在第一个循环中时,您要告诉它做的是为消息中的每个字母打印关键字中的每个字母。
你想要的是这样的循环(不清楚如果一个字符串比另一个长,你想要它做什么,我假设你希望它以较短的字符串停止,但你可以改变它。)
if(strMessage.length > keyword.length){
intLength = keyword.length;
} else {
intLength = strMessage.length;
}
for (int i=0; i<intLength; i++){
//Print the position of the i'th letter of the message
int intPosition;
intPosition=strAlphabet.indexOf(strMessage.charAt(i));
System.out.println(intPosition);
//Print the position of the i'th letter of the keyword
int intPosition2;
intPosition2=strAlphabet.indexOf(strKeyword.charAt(i));
System.out.println(intPosition2);
}
关于java - 我在另一个 'for loop' 中的 'for loop' 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31674127/