如何比较数字的最后一位与另一个数字的最后一位?
How to compare last digit of number w/ last digit of another number?
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
当最后一位数字与另一个最后一位数字相同时,它应该 return 为真,
当这两个数字不相同时,程序应该 return 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;
}
现在 returns:
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
有人对如何消除最后一个错误有任何想法吗?
我用来调用 class 的代码是:
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));
}
我的猜测是您的原始实现不起作用,因为您在应该使用 String#equals(Object)
时使用 ==
运算符来比较字符串。 ==
是身份平等。如果您有两个不同的 String 实例——即使它们具有相同的内容——==
将始终 return 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
基元上工作,在这种情况下 ==
是正确使用的。
zapl 的第一条评论已经给出了很好的提示。
public static boolean retsim(int x, int y)
{
return Math.abs(x)%10 == Math.abs(y)%10;
}
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
当最后一位数字与另一个最后一位数字相同时,它应该 return 为真, 当这两个数字不相同时,程序应该 return 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;
}
现在 returns:
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
有人对如何消除最后一个错误有任何想法吗?
我用来调用 class 的代码是:
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));
}
我的猜测是您的原始实现不起作用,因为您在应该使用 String#equals(Object)
时使用 ==
运算符来比较字符串。 ==
是身份平等。如果您有两个不同的 String 实例——即使它们具有相同的内容——==
将始终 return 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
基元上工作,在这种情况下 ==
是正确使用的。
zapl 的第一条评论已经给出了很好的提示。
public static boolean retsim(int x, int y)
{
return Math.abs(x)%10 == Math.abs(y)%10;
}