如果x为正,x%101的输出如何为零?

时间:2014-11-04 23:42:31

标签: java

我在问了很多问题之后编写了这个程序,并且以我的方式来测试程序,我输了两个奇怪的名字,我得到了不同的结果......如果你给这些名字“salman”然后“sania”它给出了结果零!!我的意思是怎么可能? 2整数并将它们相加并除以它们得到零????

所以我认为我的代码肯定是错的,但在哪里?

package loveindex;
import java.util.Scanner;

public class LoveIndex {
        public static void main(String[] args) {


            Scanner scan = new Scanner(System.in);

            System.out.println("Please enter your name :");
            String name1 = scan.nextLine();

            System.out.println("Please enter your Lover's name ");
            String name2 = scan.nextLine();

            name1 = name1.toUpperCase();

            char[] ascii1 = name1.toCharArray();
            int sum01 = 0;
            for (char ch : ascii1) {
                sum01 += ch;
            }



            name2 = name2.toUpperCase();
            char[] ascii2 = name2.toCharArray();
            int sum = 0;
            for (char ch : ascii2) {
                sum += ch;
            }

            int sumTot= (sum+sum01)%101;
            System.out.println("Percentage of Love    " + sumTot);

            scan.close();

}
}

3 个答案:

答案 0 :(得分:2)

“SALMANSANIA”的ascii值之和为808,而808%101 = 0。

答案 1 :(得分:1)

你的代码中没有发生除法运算,%是模运算符,它给你剩余的和除以101.如果总和是101的倍数那么你将得到0返回结果。

答案 2 :(得分:1)

您搜索时没有明显错误。
您正在使用模运算符返回除法的余数。

在您的情况下,使用“salman”和“sania”计算的总和为808 808除以101是8。

正如您所看到的,此操作没有剩余部分,因此模运算符返回0。

例如:

809除以101是8,其余为1 模运算符将返回1。