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));
}
答案 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
原语,在这种情况下==
使用正确。