如何比较数字的最后一位数与另一位数的最后一位数?

时间:2016-10-25 23:46:32

标签: java methods bluej user-defined

public static boolean retsim(int x, int y)
{
    String xx = x + "";
    String yy = y + "";
    boolean returnValue = false;
    if(xx.substring(xx.length() - 1) == yy.substring(yy.length() - 1))
    {
        returnValue = true;
    }
    return returnValue;
}

因此,当我编译并运行它时,没有错误。然而,当只有一个真或假的陈述时,它打印出2个错误的陈述。 例如:

Enter in two sets of numbers with either,
The same or different end digit
7
7
// ^^ The two sevens are the inputs
false
false
// ^^ The two false statements that should only be printing out one

当最后一位数字与另一位数字相同时,它应该返回true, 当这两个数字不相同时,程序应该返回false。 请帮帮忙?!

public static boolean retsim(int x, int y)
{
    String xx = x + "";
    String yy = y + "";
    boolean returnValue = false;
    if(xx.substring(xx.length() - 1).equals(yy.substring(yy.length() - 1)))
    {
        returnValue = true;
    }
    return returnValue;
}

现在它返回:

Enter in two sets of numbers with either,
The same or different end digit
7
7
// ^^ The two sevens are the inputs
true
false
// ^^ The two false statements that should only be printing out one

任何人对如何摆脱最后的错误都有任何想法?

我用来调用该类的代码是:

public static void main(String[] args) {
Scanner console = new Scanner(System.in);
System.out.println("Enter in two sets of numbers with either,\nThe same or different end digit");
int x2 = console.nextInt();
int y = console.nextInt();
System.out.println(retsim(x2,y));
}

2 个答案:

答案 0 :(得分:2)

zapl的第一条评论已经给出了很好的暗示。

public static boolean retsim(int x, int y)
{
    return Math.abs(x)%10 == Math.abs(y)%10;
}

答案 1 :(得分:-1)

我的猜测是,您的原始实现不起作用,因为您在使用String#equals(Object)时使用==运算符来比较字符串。 ==是身份相等。如果您有两个不同的String实例 - 即使它们具有相同的内容 - ==将始终返回false。

如何使用Integer#toString()呢?

public static boolean retsim(Integer x, Integer y) {
    if (null == x || null == y) {
         throw new IllegalArgumentException("x and y must not be null!");
    }

    String xString = x.toString();
    String yString = y.toString();

    return xString.charAt(xString.length-1) == xString.charAt(yString.length-1);
}

return语句正在处理两个char原语,在这种情况下==使用正确。