Как сравнить два числа в java
Перейти к содержимому

Как сравнить два числа в java

Re: В Java что, нельзя Integer’ы по != сравнивать??

Вообще-то, ИМХО, идиотизм. Ибо объектное сравнение нужно намного реже, чем по значению.

KRoN73 ★★★★★
( 16.05.06 20:53:19 MSD ) автор топика
Ответ на: Re: В Java что, нельзя Integer’ы по != сравнивать?? от KRoN73 16.05.06 20:53:19 MSD

Re: В Java что, нельзя Integer’ы по != сравнивать??

>Знаю. Но полагал, что Java Integer’ы по значению сравнивает, а не по объектам :-/

В Java в отличии от C++ нет возможности переопределять операторы, поэтому так и получается.

olegk ★★
( 16.05.06 21:00:15 MSD )
Ответ на: Re: В Java что, нельзя Integer’ы по != сравнивать?? от KRoN73 16.05.06 20:53:19 MSD

Re: В Java что, нельзя Integer’ы по != сравнивать??

А зачем в данном случае использовать boxed type? Чем native int не угодил?

anonymous
( 16.05.06 21:09:43 MSD )
Ответ на: Re: В Java что, нельзя Integer’ы по != сравнивать?? от KRoN73 16.05.06 20:53:19 MSD

Re: В Java что, нельзя Integer’ы по != сравнивать??

>Ибо объектное сравнение нужно намного реже, чем по значению.

дык использование Integer не по назначению тоже редко 😉

Pi ★★★★★
( 16.05.06 21:49:32 MSD )
Ответ на: Re: В Java что, нельзя Integer’ы по != сравнивать?? от Pi 16.05.06 21:49:32 MSD

Re: В Java что, нельзя Integer’ы по != сравнивать??

lexius ★★
( 16.05.06 22:28:38 MSD )
Ответ на: Re: В Java что, нельзя Integer’ы по != сравнивать?? от olegk 16.05.06 21:00:15 MSD

Re: В Java что, нельзя Integer’ы по != сравнивать??

Что, правда? Как всё запущено.

seiken ★★★★★
( 16.05.06 22:34:32 MSD )
Ответ на: Re: В Java что, нельзя Integer’ы по != сравнивать?? от seiken 16.05.06 22:34:32 MSD

Re: В Java что, нельзя Integer’ы по != сравнивать??

а ещё и в Си нету — как кернел вертится без этого — никто не знает

Pi ★★★★★
( 16.05.06 22:42:57 MSD )
Ответ на: Re: В Java что, нельзя Integer’ы по != сравнивать?? от KRoN73 16.05.06 20:53:19 MSD

Re: В Java что, нельзя Integer’ы по != сравнивать??

> Знаю. Но полагал, что Java Integer’ы по значению сравнивает, а не по объектам :-/

надо не поЛАГАТЬ а доки читать.

> Вообще-то, ИМХО, идиотизм. Ибо объектное сравнение нужно намного реже, чем по значению.

в зеркале у тебя идиотизм. это всё лишь твоё ИМХО.

P.S. И чегой-то тя на Java потянуло? Не так давно кричал же что тормоз это, да и уступает твоему любимому PHP.

Chapaev ★
( 17.05.06 01:33:03 MSD )
Ответ на: Re: В Java что, нельзя Integer’ы по != сравнивать?? от Chapaev 17.05.06 01:33:03 MSD

Re: В Java что, нельзя Integer’ы по != сравнивать??

> можно, но ты сравниваешь объекты.

Сравниваются указатели на объекты, а вовсе не они сами. Чтобы сравнить два объекта, нужно использовать метод equals(obj).

По значению можно операторами == и != сравниваются только примитивные типы.

>Знаю. Но полагал, что Java Integer’ы по значению сравнивает, а не по объектам :-/

Книги читать нужно, книги.

jek_ ★
( 17.05.06 08:45:44 MSD )
Ответ на: Re: В Java что, нельзя Integer’ы по != сравнивать?? от anonymous 16.05.06 21:09:43 MSD

Re: В Java что, нельзя Integer’ы по != сравнивать??

>Чем native int не угодил?

Потому что стек только Object содержит. Он общий на все виды данных. Соответственно, int туда не положишь.

KRoN73 ★★★★★
( 17.05.06 12:25:12 MSD ) автор топика
Ответ на: Re: В Java что, нельзя Integer’ы по != сравнивать?? от Chapaev 17.05.06 01:33:03 MSD

Re: В Java что, нельзя Integer’ы по != сравнивать??

>Не так давно кричал же что тормоз это, да и уступает твоему любимому PHP.

Ты меня явно с кем-то путаешь. На Java я около полутора лет уже в рамках одного проекта работаю. PHP, впрочем, тоже использую лет пять.

А про скорость — ты тем более мимо кассы, ибо я как раз приводил частные примеры, где чисто числодробительная задача на Java оказывалась быстрее нативного Си.

KRoN73 ★★★★★
( 17.05.06 12:27:17 MSD ) автор топика
Ответ на: Re: В Java что, нельзя Integer’ы по != сравнивать?? от jek_ 17.05.06 08:45:44 MSD

Re: В Java что, нельзя Integer’ы по != сравнивать??

>Книги читать нужно, книги.

Это полезно только в первых лет 10 программирования и только в первых 10 изучаемых языках 😀

KRoN73 ★★★★★
( 17.05.06 12:28:19 MSD ) автор топика
Ответ на: Re: В Java что, нельзя Integer’ы по != сравнивать?? от KRoN73 17.05.06 12:28:19 MSD

Re: В Java что, нельзя Integer’ы по != сравнивать??

> Это полезно только в первых лет 10 программирования и только в первых 10 изучаемых языках 😀

«Secret hacker rule #11: hackers read manuals» (C).

anonymous
( 17.05.06 14:45:49 MSD )
Ответ на: Re: В Java что, нельзя Integer’ы по != сравнивать?? от KRoN73 17.05.06 12:28:19 MSD

Re: В Java что, нельзя Integer’ы по != сравнивать??

> Это полезно только в первых лет 10 программирования и только в первых 10 изучаемых языках 😀

Ну-ну. Вот из-за такого отношения и появляются на форумах вопросы «а чё эт интеджеры в Джаве не сравниваются?». 🙂

jek_ ★
( 17.05.06 14:46:30 MSD )

Re: В Java что, нельзя Integer’ы по != сравнивать??

Кстати, объясните тогда, почему числа до 128, всё же, сравниваются корректно? 🙂

KRoN73 ★★★★★
( 18.05.06 08:27:20 MSD ) автор топика
Ответ на: Re: В Java что, нельзя Integer’ы по != сравнивать?? от KRoN73 18.05.06 08:27:20 MSD

Re: В Java что, нельзя Integer’ы по != сравнивать??

Я, кстати, с самого начала обсуждения хотел это узнать, но стеснялся спросить

Как правильно сравнить два целых числа в Java?

a автоматически будет распакован, и сравнение будет работать. Однако, что происходит, когда вы сравниваете два вставных Integers и хотите сравнить либо равенство, либо меньше/больше, чем?

Integer a = 4; Integer b = 5; if (a == b) 

Будет ли выше код приводить к проверке того, являются ли они одним и тем же объектом, или будет ли он автоматически распаковываться в этом случае? Как насчет:

Integer a = 4; Integer b = 5; if (a < b) 

Jon Skeet 04 окт. 2009, в 00:20
Поделиться
Ну, что случилось, когда ты попробовал? Что вы наблюдали?
Bart Kiers 03 окт. 2009, в 21:36

@Bart Барт Киерс: Явный эксперимент мог только опровергнуть, но не доказать, что распаковка происходит. Если использование == вместо equals приводит к правильному результату, это может быть связано с тем, что числа в штучной упаковке интернированы или используются иным образом (предположительно, для оптимизации компилятора). Причиной задать этот вопрос является выяснение того, что происходит внутри, а не того, что происходит. (По крайней мере, поэтому я здесь.)

Jim Pivarski 08 дек. 2013, в 06:23
Поделиться:
autoboxing

7 ответов

Нет, == между Integer, Long и т.д. будет проверять ссылочное равенство - i.e.

Integer x = . ; Integer y = . ; System.out.println(x == y); 

это проверит, относятся ли теги x и y к одному и тому же объекту, а не к равным объектам.

Integer x = new Integer(10); Integer y = new Integer(10); System.out.println(x == y); 

гарантируется печать false . Интернирование "малых" значений автобокса может привести к сложным результатам:

Integer x = 10; Integer y = 10; System.out.println(x == y); 

Это напечатает true , из-за правил бокса (JLS раздел 5.1.7). Он по-прежнему ссылается на равенство, но ссылки действительно равны.

Лично я бы использовал:

if (x.intValue() == y.intValue()) 
if (x.equals(y)) 

Последнее немного менее эффективно - нет перегрузки для Integer.equals(Integer) , поэтому ему придется выполнять проверку типа времени выполнения, тогда как первый использует тот факт, что мы уже знаем, что оба объекта Integer s.

К счастью, compareTo знает о типах, поэтому:

if (x.compareTo(y) < 0) 

должен быть эффективен. Конечно, это область микрооптимизации, и вы должны использовать код, который вы найдете наиболее ясным - после того, как он будет прав:)

Как вы говорите, для любого сравнения между типом-оболочкой ( Integer , Long и т.д.) и числовым типом ( int , Long и т.д.) значение типа обертки распаковывается, и тест применяется к примитивные значения.

Это происходит как часть двоичной цифровой рекламы (JLS раздел 5.6.2). Посмотрите на каждую отдельную документацию оператора, чтобы узнать, применяется ли она. Например, из документов для == и!= (JLS 15.21.1):

Если операнды равенства оператор имеют как числовой тип, так и один имеет числовой тип, а другой является конвертируемой (п. 5.1.8) в числовой тип, двоичное числовое продвижение выполняются над операндами (§5.6.2).

Тип каждого из операндов оператор численного сравнения должен быть тип, который является конвертируемым (п. 5.1.8), к примитивный числовой тип или ошибка компиляции. двоичный числовое продвижение выполняется на операндов (§5.6.2). Если продвинутый тип операндов int или long, то целочисленное сравнение со знаком выполнено; если этот продвинутый тип float или double, затем с плавающей запятой сравнение выполняется.

Обратите внимание, что это не рассматривается как часть ситуации, когда ни один из типов не является числовым.

Jon Skeet 04 окт. 2009, в 08:31
Поделиться
Есть ли какая-то причина, по которой можно написать x.compareTo(y) < 0 вместо x < y ? Max Nanasy 29 авг. 2015, в 01:06 @MaxNanasy: Не то, чтобы я мог сразу думать. Jon Skeet 29 авг. 2015, в 08:14

Начиная с Java 1.6.27+ в классе Integer имеется перегруженная функция equals, поэтому она должна быть такой же эффективной, как и вызов .intValue (). Он сравнивает значения как примитив int.

otterslide 22 сен. 2016, в 17:44

Как сказал @otterslide, в Java 8 это больше не нужно. Сравнение Integer с Integer по умолчанию выполняется по значению.

Axel Prieto 21 июль 2018, в 11:12

@Axel: Аксель: Добавление перегрузки не изменит поведение оператора ==, правда? Я не в состоянии проверить прямо сейчас, но я был бы очень удивлен, если это изменилось.

Jon Skeet 21 июль 2018, в 14:51
Показать ещё 3 комментария

== все равно будет проверять равномерность объекта. Однако легко обмануть:

Integer a = 10; Integer b = 10; System.out.println(a == b); //prints true Integer c = new Integer(10); Integer d = new Integer(10); System.out.println(c == d); //prints false 

Ваши примеры с неравенствами будут работать, поскольку они не определены в объектах. Однако при сравнении == все равно будет проверяться равенство. В этом случае, когда вы инициализируете объекты из примитива в штучной упаковке, используется тот же объект (для a и b). Это хорошая оптимизация, поскольку примитивные классы ящиков неизменяемы.

Adam Lewis 03 окт. 2009, в 22:02
Поделиться

Я подумал, что проверяется равенство объектов. У меня были странные результаты. Должен ли я заменить его на .equals ()? Кроме того, вы считаете, что я должен оставить неравенства такими, какие они есть, или сделать это иначе?

Samatha84 03 окт. 2009, в 21:42

Есть некоторые неочевидные крайние случаи с автобоксом. Мой IDE (Eclipse) настроен на то, чтобы распаковывать все, что было распаковано, красным, это несколько раз спасало меня от ошибок. Если вы сравниваете два целых числа, используйте .equals, если вы хотите прояснить свое неравенство, напишите приведение в явном виде: if ((int) c
Adam Lewis 03 окт. 2009, в 22:40
И если вы измените числовые литералы на 200 , оба теста выведут false .
Daniel Earwicker 03 окт. 2009, в 23:11

. в большинстве реализаций JVM. В зависимости от спецификации языка результат может отличаться в зависимости от реализации.

Daniel Earwicker 03 окт. 2009, в 23:12

Я думаю, что более понятно назвать это «ссылочным равенством» - таким образом, очевидно, что вы имеете в виду. Я обычно понимаю, что «равенство объектов» означает «результат equals ».

Jon Skeet 04 окт. 2009, в 07:03
+1 Джон 🙂 Я просто подумал: «Разве (c == d) не сравнивать ссылочную переменную объекта?»
Eddie B 28 окт. 2012, в 21:17
Но целое число а = 3000; Целое число b = 3000; System.out.println (a == b); // печатает ложь
Danil Chernokalov 05 окт. 2013, в 02:01

@AdamLewis Не могли бы вы прислать мне ссылку, которая объясняет, что делать, чтобы раскраска работала так, как вы? 🙂 Спасибо заранее!

Anton 04 сен. 2014, в 14:56

Для всех остальных, ищущих, как заставить окраску работать: в Eclipse нажмите Ctrl+3 и найдите Syntax coloring .

eee 07 нояб. 2014, в 19:40

Я думаю, что это явно не нормальная оптимизация, поскольку она работает только для небольших автоматически упакованных примитивов, и то, с каким набором автоматически упакованных примитивов она работает, будет варьироваться от одной реализации к другой, делая ваш код хрупким.

Theodore Murdock 15 сен. 2015, в 00:05

Осторожно, Integer c = Integer.valueOf(10); Integer d = Integer.valueOf(10); System.out.println(c == d); //prints TRUE поскольку valueOf использует кэш от -127 до +127. Что касается Long.valueOf. Так что не полагайтесь на == за исключением Primitive или Enum

Julien Feniou 09 нояб. 2018, в 11:00
Показать ещё 9 комментариев

== проверяет ссылочное равенство, однако при написании кода вроде:

Integer a = 1; Integer b = 1; 

Java достаточно умен, чтобы использовать одно и то же неизменяемое для a и b , поэтому это верно: a == b . Любопытно, что я написал небольшой пример, показывающий, где java останавливает оптимизацию таким образом:

public class BoxingLol < public static void main(String[] args) < for (int i = 0; i < Integer.MAX_VALUE; i++) < Integer a = i; Integer b = i; if (a != b) < System.out.println("Done: " + i); System.exit(0); >> System.out.println("Done, all values equal"); > > 

Когда я компилирую и запускаю это (на моей машине), я получаю:

Done: 128 

Cory Kendall 15 июль 2015, в 22:19
Поделиться

tl; dr -1 для ручной работы; stackoverflow.com/questions/15052216/… stackoverflow.com/questions/20897020/… stackoverflow.com/questions/3131136/integers-caching-in-java и т. д. подробно объясняют упомянутый вами вопрос; лучше читать документы (или исходный код lib), чем создавать псевдотесты с риском высокой локализации результатов - вы не только полностью забыли о нижней границе кэша (то есть по умолчанию -128), не только у вас есть по одному (максимум 127, а не 128),

vaxquis 22 дек. 2015, в 00:08

но у вас нет полной гарантии получить тот же результат на любой машине - поскольку вы можете легко увеличить размер кэша самостоятельно, YMMV. Кроме того, вопрос OP состоял в том, как правильно сравнить два целых числа - вы еще не ответили на него .

vaxquis 22 дек. 2015, в 00:08

Я уважаю ваше мнение и восприятие здесь. Я думаю, что у нас просто есть принципиально разные подходы к CS.

Cory Kendall 22 дек. 2015, в 03:06

это не мнение или восприятие - это факты , которые вы искренне упустили. Проведение псевдотестирования, ничего не доказывающего, без каких-либо твердых данных (документов, источников и т. Д.) И без ответов на вопросы OP, не заслуживает того, чтобы называться ни хорошими вопросами и ответами, ни CS. Что касается «другого подхода» - КС по определению является наукой ; то, что вы сделали наукой, не является ; это вводящие в заблуждение пустяки (или это будет интригующий комментарий , если он будет правильно сформулирован) - если вы хотите, чтобы это был научный подход , исправьте фундаментальные недостатки в вашем ответе или разумно опровергните их, так как именно так работает экспертная проверка

vaxquis 22 дек. 2015, в 15:02

Конечно, я постараюсь устранить недостатки. Я не забыл о нижней границе, я не чувствовал, что это интересно, и решил не включать ее. Я не верю, что у меня отключена одна ошибка, я указал способ, которым java (который я разъяснил на моей машине, в моей ситуации) прекратил оптимизировать, это было на уровне 128. Если бы я указал максимальное значение, это сделало это для того, чем вы правы, ответ был бы 127.

Cory Kendall 23 дек. 2015, в 22:29

Чтобы ответить на ваш более крупный вопрос, я подхожу к тому, что узнаю о программировании и обучаю его не чтению документов, а изучению мира (инструменты, языки, структуры и т. Д.) Вокруг нас и наблюдению за результатами. Тем не менее, вы делаете хорошее замечание, что это действительно больше комментарий. Учитывая, что у меня нет возможности сделать этот более длинный исследовательский комментарий, включая код, я пока оставлю это как ответ. Если вы проголосуете за закрытие, я бы не обиделся и позволил бы голосованию / системе справиться с этим

Cory Kendall 23 дек. 2015, в 22:32

при написании ответа в Q / A формате, ваш ответ musn't быть о том, что вы чувствуете себя лично интересно, но о том, что OP (и , таким образом, сам вопрос) нуждается / требует и / или то , что случайный посетитель этого заданного Q / A мог бы рассмотреть либо очень полезную, ясную и проверяемую информацию по этому вопросу - опять же, ваш код вводит в заблуждение будущих посетителей (по причинам, изложенным в моем первом комментарии), и подход, который вы представите, может стать источником многих вредных привычек программирования , относительно того, почему -

vaxquis 24 дек. 2015, в 14:28

(и в отношении «подходов к обучению»), имейте в виду, что «изучать мир» имеет смысл только тогда, когда это делается систематически , таким образом, что действительно что- то доказывает . Вот как работают хорошие тесты, так работает обратный инжиниринг, так работает наука. Вы этого не сделали (обратите внимание, что это уже сделано в разделе «Вопросы и ответы», который я связал в начале), поскольку вы представили данные (код и выходные данные) без: а) вспомогательных данных (документов), б) обширного охвата тестированием Я честно предпочитаю улучшать, а не помечать и удалять Кроме того, нет никаких «близких» для ответов - это только для вопросов AFAIK.

vaxquis 24 дек. 2015, в 14:32
Показать ещё 6 комментариев

Начиная с Java 1.7 вы можете использовать Objects.equals:

java.util.Objects.equals(oneInteger, anotherInteger); 

Возвращает true, если аргументы равны друг другу, а false - в противном случае. Следовательно, если оба аргумента равны null, возвращается true, и если только один аргумент имеет значение null, возвращается false. В противном случае равенство определяется с помощью метода equals первого аргумента.

Justas 22 март 2018, в 15:52
Поделиться

if (a == b) 

Будет работать большую часть времени, но он не гарантирует, что он всегда будет работать, поэтому не используйте его.

Самый правильный способ сравнения двух классов Integer для равенства, считая, что они называются 'a' и 'b', это вызвать:

if(a != null && a.equals(b))

Вы также можете использовать этот способ, который немного быстрее.

 if(a != null && b != null && (a.intValue() == b.intValue()))

На моей машине 99 миллиардов операций заняли 47 секунд, используя первый метод, и 46 секунд, используя второй метод. Вам нужно будет сравнивать миллиарды значений, чтобы увидеть разницу.

Обратите внимание, что 'a' может быть null, так как это объект. Сравнение таким образом не приведет к исключению нулевого указателя.

Для сравнения большего и меньшего, используйте

if (a != null && b!=null) < int compareValue = a.compareTo(b); if (compareValue >0) < System.out.println("a is greater than b"); >else if (compareValue < 0) < System.out.println("b is greater than a"); >else < System.out.println("a and b are equal"); >> else

otterslide 22 сен. 2016, в 19:46
Поделиться
if (a==b) работает только для небольших значений и не будет работать большую часть времени.
Tony 30 авг. 2017, в 15:04

Он работает до 127, так как это целочисленный кеш Java по умолчанию, который гарантирует, что все числа до 127 имеют одинаковое ссылочное значение. Вы можете установить кэш выше 127, если хотите, но просто не используйте == для безопасности.

otterslide 31 авг. 2017, в 15:53

tl; dr Мое мнение заключается в использовании унарного + для запуска unboxing на одном из операндов при проверке равенства значений и просто использовании операторов математики в противном случае. Обоснование следует:

Уже упоминалось, что сравнение == для Integer - это сравнение идентичности, которое обычно не то, что хочет программист, и что целью является сравнение значений; Тем не менее, я сделал небольшую науку о том, как сделать это сравнение наиболее эффективно, как с точки зрения компактности, правильности и скорости кода.

Я использовал обычный набор методов:

public boolean method1() < Integer i1 = 7, i2 = 5; return i1.equals( i2 ); >public boolean method2() < Integer i1 = 7, i2 = 5; return i1.intValue() == i2.intValue(); >public boolean method3() < Integer i1 = 7, i2 = 5; return i1.intValue() == i2; >public boolean method4() < Integer i1 = 7, i2 = 5; return i1 == +i2; >public boolean method5() < // obviously not what we want.. Integer i1 = 7, i2 = 5; return i1 == i2; >

и получил этот код после компиляции и декомпиляции:

public boolean method1() < Integer var1 = Integer.valueOf( 7 ); Integer var2 = Integer.valueOf( 5 ); return var1.equals( var2 ); >public boolean method2() < Integer var1 = Integer.valueOf( 7 ); Integer var2 = Integer.valueOf( 5 ); if ( var2.intValue() == var1.intValue() ) < return true; >else < return false; >> public boolean method3() < Integer var1 = Integer.valueOf( 7 ); Integer var2 = Integer.valueOf( 5 ); if ( var2.intValue() == var1.intValue() ) < return true; >else < return false; >> public boolean method4() < Integer var1 = Integer.valueOf( 7 ); Integer var2 = Integer.valueOf( 5 ); if ( var2.intValue() == var1.intValue() ) < return true; >else < return false; >> public boolean method5() < Integer var1 = Integer.valueOf( 7 ); Integer var2 = Integer.valueOf( 5 ); if ( var2 == var1 ) < return true; >else < return false; >> 

Как вы можете легко видеть, метод 1 вызывает Integer.equals() (очевидно), методы 2-4 приводят к точному же коду, разворачивая значения с помощью .intValue() , а затем сравнивая их напрямую, а метод 5 просто запускает сравнение идентичности, являющееся неправильным способом сравнения значений.

Поскольку (как уже упоминалось, например, JS) equals() берет накладные расходы (он должен делать instanceof и неконтролируемый отбор), методы 2-4 будут работать с точно такой же скоростью, заметно лучше, чем метод 1, когда используется в жестких петлях, поскольку HotSpot вряд ли оптимизирует отливки и instanceof .

Это очень похоже на другие операторы сравнения (например, < / >) - они вызовут unboxing, а использование compareTo() не будет - но на этот раз операция очень оптимизирована HS, поскольку intValue() это просто метод геттера (основной кандидат на оптимизацию).

По-моему, редко используемая версия 4 является наиболее кратким способом - каждый опытный разработчик C/Java знает, что унарный плюс в большинстве случаев равен ставке int / .intValue() - хотя это может быть немного Время WTF для некоторых (в основном тех, кто не использовал унарный плюс в своей жизни), он, возможно, показывает намерение наиболее четко и наименее - он показывает, что мы хотим иметь значение int одного из операндов, заставляя другое значение для удаления. Также неоспоримо наиболее похоже на обычные i1 == i2 сравнения используются для примитивного int значения.

Мое голосование за стиль i1 == +i2 и i1 > i2 для объектов Integer , как по соображениям производительности, так и по последовательности. Он также переносит код в примитивы, не изменяя ничего, кроме объявления типа. Использование названных методов похоже на введение семантического шума для меня, похоже на сильно критикуемый стиль bigInt.add(10).multiply(-3) .

Имеются два числа long, как их сравнить между собой?

Сравнить между собой два одномерных массива поэлементно
сравнить между собой два одномерных массива поэлементно (т.е a-b, a-b) и передать в третий min.

Сравнить два массива и вывести числа, которые имеются и в первом и во втором массиве
2. Есть два массива ar и ar2. int ar = ; int ar2 =.

Сравнить цифры числа, указать какие цифры этого числа равны между собой
Пользователь вводит любое целое число. Сравнить 1 и 2 цифру числа и указать какие еще цифры этого.

Регистрация: 13.12.2017
Сообщений: 192
Пример числа типа long. /
И создай новую тему с таким-же вопросом, быстрее увидят.
Регистрация: 09.01.2018
Сообщений: 59

да я новичок у вас.
суть задачи:Напишите программу, которая возвращает наибольшее число палиндром, которое является произведением двух простых пятизначных чисел, а также возвращает сами сомножители.
говнокод который я пишу. велосипеды изобретены,видел. но хочу свой. вот если умножить 99999 на 99999 будет лонг. :

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
public class Temp { public void main(String[] args) { long a = 11111; long b = 99999; long i; for (i = b; i >= a; i--) { b--; a=b; for (i = b; i >= a; i--) { a--; long result = a * b; long reverse = Long.reverse(result); // String str = Long.toString(result); // StringBuffer str1 = new StringBuffer(str); // StringBuffer reverse = str1.reverse(); boolean se = result.equals(reverse); if (Long(result)equals(reverse)) { System.out.println(result); System.out.println(reverse); System.out.println(a + b); // long result = Long.reverse(value); } break; } break; } } }

да, сейчас тут булин не к месту и закомментировано нужное. но не суть. хочу сравнить result и reverse.
и посоветуйте что изучить))

Как сравнить 2 числа в java

В Java для сравнения двух чисел используется операторы сравнения.

Операторы сравнения в Java:

  • == - сравнение на равенство;
  • != - сравнение на неравенство;
  • > - больше;
  • >= - больше или равно;
  • < - меньше;

Пример кода для сравнения двух чисел:

int a = 5; int b = 7; if (a > b)  System.out.println("a больше b"); > else if (a  b)  System.out.println("b больше a"); > else  System.out.println("a и b равны"); > 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *