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.
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.
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.
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.
Villagram
Bom aprendizado fera, ainda bem que consegui ajudar.
staroski
Só por curiosidade, estás fazendo um conversor de BIG ENDIAN para LITTLE ENDIAN e vice-versa?