否则,如果没有工作

时间:2016-12-18 18:07:38

标签: java

这应该将单词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));
        }

    }

}

4 个答案:

答案 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)