Sou novo em Java e estava querendo aprender mais sobre java e me deparei com um exercício que não consigo resolver.
Preciso inverter uma String de números sendo que preciso manter a ordem de 2 caracteres e inverter sucessivamente. Por exemplo:
public class Teste{
public static void main(String[] args) {
Stringt="99E65A78";
// A saída deveria ser 785AE699.
Sei deste método para inverter Strings, mas o mesmo inverte tudo, não mantendo a ordem de 2 caracteres.
publicclassStringDemo{publicstaticvoidmain(String[]args){Stringpalindrome="Dot saw I was Tod";intlen=palindrome.length();char[]tempCharArray=newchar[len];char[]charArray=newchar[len];// put original string in an array of charsfor(inti=0;i<len;i++){tempCharArray[i]=palindrome.charAt(i);}// reverse array of charsfor(intj=0;j<len;j++){charArray[j]=tempCharArray[len-1-j];}StringreversePalindrome=newString(charArray);System.out.println(reversePalindrome);}}
Então amigo, nesse caso este programa retorna a String completamente ao contrário. Por exemplo “99E65A78” está retornando “87A56E99”, quando na verdade deveria retornar “785AE699”. Este código equivale a este aqui…
public class LittleEndian {
public static void main(String[] args) {
Estou com dificuldade em deixar como retorno a String “785AE699”, ou seja, invertendo de 2 em 2 caracteres.
V
Villagram2 likes
Boa noite, amigo.
Gostei desse desafio e fiz um método que faz exatamente isso, espero que ajude no seu aprendizado:
publicclassPrograma{publicstaticvoidmain(String[]args){Stringt="99E65A78";Programap=newPrograma();System.out.println(p.dinamicInverter(2,2,t));}/** * Este método inverte a string de forma dinâmica mantendo a posição de * caracteres no fim da string e invertendo o restante na quantidade * especificada. * * <html> * <p>Exemplo:</p> * <p>manter = 2, invertQuant = 2, string = "99E65A78"</p> * <p>Saída: 785AE699</p> * </html> * * @param manter Quantidade de caracteres a se manter * @param invertQuant Quantidade de caracteres a inverter * @param string String que será invertida * @return String invertida como solicitado */publicStringdinamicInverter(intmanter,intinvertQuant,Stringstring){manter=manter<0?0:manter;invertQuant=invertQuant<=0?1:invertQuant;Stringresultado=string.substring(string.length()-manter,string.length());Stringstr=string.substring(0,string.length()-manter);while(str.length()>0){if((str.length()-invertQuant)<0){resultado+=str.substring(0,str.length());break;}resultado+=str.substring(str.length()-invertQuant,str.length());str=str.substring(0,str.length()-invertQuant);}returnresultado;}}
Boa sorte a todos.
R
rodriguesabner
Porra villagram… Vc não perde uma mano kkkkkk. Todos os posts o cara manja de alguma coisa. Parabéns mesmo!
G
Gust123
Uau Villagram era exatamente isso!! Muito bonito o código e com certeza vou estudar ele para aprender mais!! Muito obrigado a você e a todos que ajudaram!!
Um abraço.
V
Villagram3 likes
Muito obrigado amigo, também gosto dos seus posts, seus códigos tbm são muito bons. Eu sempre procuro alguma post que ninguém respondeu ou que não encontraram a solução, quando você tenta resolver, mesmo que seja um problema pequeno e tbm as vezes em uma linguagem que você não domina, você cresce mais do que estudando documentação.
V
Villagram
Bom aprendizado fera, ainda bem que consegui ajudar.
S
staroski
Só por curiosidade, estás fazendo um conversor de BIG ENDIAN para LITTLE ENDIAN e vice-versa?