这应该将单词yup放到每个第二个字符,yap到每五个,并且都是yap到每十分之一。它确实只对每个第二个角色使用了。
我无法弄清问题是什么。谢谢你的帮助。
for(int i = 0; i < word.length(); i++) {
if( i % 2 != 0) {
System.out.print(word.charAt(i) + " yup");
System.out.println();
}
else if( i + 1 % 5 == 0) {
System.out.print(word.charAt(i) + " yap");
System.out.println();
}
else if( i + 1 % 10 == 0) {
System.out.print(word.charAt(i) + " yup yap");
System.out.println();
}
else{
System.out.println(word.charAt(i));
}
}
}
答案 0 :(得分:3)
将Put()放入else if
操作中。 Mod(%)优先于sum,这就是为什么它不起作用。
else if( (i + 1) % 5 == 0)
和
else if(( i + 1) % 10 == 0)
答案 1 :(得分:3)
Modulo 5“隐藏”模数“10”。您必须重新考虑您的算法。任何10的倍数,也是5的倍数。
答案 2 :(得分:1)
反转if-else语句并将i + 1
放在大括号中:
if((i + 1) % 10 == 0) {
System.out.print(word.charAt(i) + " yup yup");
System.out.println();
}
else if((i + 1) % 5 == 0) {
System.out.print(word.charAt(i) + " yap");
System.out.println();
}
else if(i % 2 != 0) {
System.out.print(word.charAt(i) + " yup");
System.out.println();
}
else{
System.out.println(word.charAt(i));
}
如果(i + 1) % 10
为零,则(i + 1) % 5
也为零。
答案 3 :(得分:0)
请注意操作员优先级,因为Mod(%)优先于sum(+)。
else if( i + 1 % 5 == 0)
此else if
无法正常工作,因为Mod(%)将在sum(+)之前执行。这就是为什么你必须改变代码才能使它工作的原因:
else if( (i + 1) % 5 == 0)