Защо връща "False" ?!
Според вас, защо връша "лъжа" при положение, че се вижда, че двата елемента са идентични?
Според вас, защо връша "лъжа" при положение, че се вижда, че двата елемента са идентични?
За да не правя нова тема за един елементарен въпрос от един ред ще го задам тук в тази.
System.out.printf("%10s|", Integer.toBinaryString(a).replace(' ', '0'));
Този ред код е част от задачката за форматиране на числа от домашното. Питам се само, защо не работи .replace метода?
При въвеждане на а = 2, принтира "10" и 8 празни места...
Пробвай така:
аз го направих така - първо прехвърлих десетичното число в стринг (да го изпише като binary) след това когато пробвах да изпиша нули пред стринга с "%10s", binA и при мен изписваше само 10 празни места, да добавя нули отпред не стана и затова се разрових. Накрая отрких, че 0-ли пред стринг не можеш да добавиш, затова стринга binA го парс-вам отново към целочислено число ( ако в твоя случай а = 2 , стринга е станал 10). С "%010d" си изписваш числото (10) и добавяш отпред нули докато запълниш зададената ширина от 10 символа.
Малко объркано обясних май но - с 2 думи: след като го направиш на стринг го парсни отново към int и ползвай плейсхолдъра за целочислени числа - с него можеш пред числото да си добавяш нули.
Благодарско, сега го изкара.
Явно трябва, да се форматира отделно в стринг и после да се принтира, a не да се форматира директно в sout-a...
Ясно, мерси! :))
+1
П.п - Евела, на хейтъра, който ми е дал -1 за това, че не съм разбрал нещо и съм пуснал тема за да го науча... :)
Жив и здрав! :*
Oще един вариант .
Дамм, варианти много... :)
Това е хубавото, когато не си разбрал нещо и пуснеш една тема в форума и те засипят с решения на твоя толкова "труден" проблем. И след това като дойде момент, в който ти се налага да използваш наученото от ситуацията, в която си изпаднал се сещаш за толкова много решения и трудно може да ги забравиш...
Благодарско! :)
Аз бих ти дал минус (но обикновено не го правя в такива случаи), защото задаваш въпрос, чийто отговор е добре известен и може да се намери с минимални усилия. Би било оправдано ако беше в секцията Основи на програмирането, където хората са съвсем неориентирани, но във Fundamental вече би трябвало да се демонстрира повече усилие при разнищването на подобен род проблеми.
Щом казваш... :) Аз няма да задам подобен въпрос ако знам отговора или се правя на "някой си" само за да отворя подобна тема. Направих ресърч и открих, че алтернатива за .Padleft-a в C# е .replace метода. Пробвах го и не проработи. Мисля, че пробвах и тази опция, но незнайно защо не сработи и тя. След няколко неуспешни опита, просто реших да попитам тук във форма, защото знаех, че ще получа правилен, бърз и работещ отговор на проблема ми... Това е, но щом смяташ, че съм си заслужил минуса, така да е,. Няма сърдити. :)
Важното, е че научих това, което исках и предадох цялото домашно без липси в срок. Както се казва, "Продължаваме напред!"
Интересно ми е какво си потърсил. Току-що прочетох, че си търсил за алтернатива на padleft в Java, та просто написах "padleft java" в гугъл и ми излезе на първи резултат, точно това, което са ти отговорили по-рано - плейсхолдъри. Не го казвам с цел да се заяждам, а за да обменим опит и реално да се научим да намираме информация.
Иначе една насока от мен - вместо просто да опитваш варианти докато тръгне, опитай се да разбереш защо не работи конкретния ти вариант. Например какво очаква printf (и всякакви други формат методи): Плейсхолдър и след това стойност. Имаш плейсхолдъра, след това си подал резултата от стринга "Integer.toBinaryString(2)". Който ако сам по себе си го пуснеш в стринг, ще видиш че в него няма нито празни места, нито нули. Той е просто "10". Колкото и замени (replace) на празни места с нули да му сложиш, това няма да проработи. Така, че пред теб остава въпроса как първо да стигнеш до така желаната ситуация да има празни места. И, да, намерил си начинът - но той просто принтира. Сега, не знам дали съм прав, но на мен би ми щракнала някаква лампичка, че тъй като съм изпратил резултата вече да се принтира, няма кой знае какво повече да му форматирам, така че не ме устройва да го пращам за принтиране, и трябва да намеря начин да го запазя някъде. Та това е нещото, което ще потърся - как да запазя форматиран стринг - и ще стигна до String.format. И ето го твоето решение. В стринга "res" запазваме спейсовете и 10ката - String res = String.format("%10s", Integer.toBinaryString(2)); Сега като го имаме този стринг вече идва момента да replace-ваме. res = res.replace(' ', '0'); И woohoo - проработи. Сега като сме разбрали как са станали нещата можем да помислим дали няма възможност този плейсхолдър вместо да слага спейсове, да слага нули директно ;-) (което го установихме в първия абзац как става)
P.S.: Нямам за цел да те обезкуража да пишеш във форума, а по-скоро да те окуража да подобриш мисленето си и може би начините на търсене на информация.
Дам, така е. Просто времето ме препираше и ми се бързаше да предам домашното в срок. Както казах, мисля, че се натъкнах на този вариант (правилния), но явно не съм го написал като хората, защото не проработи.. Както и да е, мерси на всички отзовали се, на макар и глуповатия ми въпрос. :)
+1