2016-10-25 20 views
1
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 ложных утверждения, когда должно быть только одно утверждение true или false. Как, например:Как сравнить последнюю цифру числа с последней цифрой другого номера?

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 

Когда последняя цифра такая же, как и другие последней цифры он должен вернуть истинный, и когда эти две цифры не совпадают, программа должна возвращать ложь. Пожалуйста, помогите ?!

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

ужасен, но это почти решение: http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java - вы можете сделать это просто один вкладыш с http://stackoverflow.com/questions/90238/whats-the-syntax-for-mod-in-java – zapl

+0

Спасибо за предложение, но знаете ли вы, почему он распечатает два ложных заявления? @zapl –

+0

первая ссылка, == не делает то, что вы думаете – zapl

ответ

2

Самый первый комментарий от zapl уже дает отличный намек.

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

, которая вернет истину? @Dino Tw –

+0

Если это возможно, вы, возможно, просто решили все мои проблемы –

+0

да, он возвращает логическое значение, true для false. –

-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 примитивов, в этом случае == правильно использовать.

+0

Извините, но не могли бы вы объяснить, что: throw делает? Я пытаюсь следить за тем, что вы сделали. @nasukkin –

+0

@ S.Nary Ahh, это просто проверка аргументов. Если 'x' или' y' входят в метод со значением 'null', исключение IllegalArgumentException будет вызываться с полезным сообщением, объясняющим, что метод не может работать с этими аргументами. – nasukkin

+0

О, спасибо, что это очищает часть от –

 Смежные вопросы

  • Нет связанных вопросов^_^