Invertir una cadena con Java

25/Ago/2007 Java , , , 58 Comentarios

En una de nuestras páginas, uno de nuestros visitantes nos pedía un programa sobre como invertir una cadena en Java. Vamos a ver que código necesitamos para poder hacer esto.

Lo primero es tener una cadena. Esto es sencillo:

  1. String sCadena = "LineaDeCodigo";

La idea es muy simple. Iremos recorriendo la cadena, carácter a carácter, desde el último carácter hasta el primero. Para ello nos apoyamos en un bucle for.

  1. for (int x=sCadena.length()-1;x>=0;x--)
  2. sCadenaInvertida = sCadenaInvertida + sCadena.charAt(x);

Para obtener el último carácter lo haremos mediante el método .length() que nos da el tamaño de la cadena y restándole uno. Esto es así ya que los caracteres de la cadena están numerados del 0 al tamaño de la cadena menos uno.

Ahora solo tendremos que volcar a consola la cadena invertida:

  1. System.out.println(sCadenaInvertida);

Vídeos sobre Java


58 comentarios en “Invertir una cadena con Java”

Víctor Cuervo

juan manuel

necesito ayuda en este punto no he podido invertir la palabra
Realizar una función que, dada una lista, devuelva una nueva lista cuyo contenido sea igual a la original pero invertida. Así, dada la lista [‘Di’, ‘buen’, ‘día’, ‘a’, ‘papa’], deberá devolver [‘papa’, ‘a’, ‘día’, ‘buen’, ‘Di’].

Víctor Cuervo

Víctor Cuervo

Buenas es tan sencillo como definir una clase List e invertirla con las ayudas de las colecciones.

Collections.reverse(list);

Lo tienes explicado en http://lineadecodigo.com/java/invertir-una-lista/

Espero que te sirva.

Saludos.

Víctor Cuervo

Oswaldo

Gracias por el codigo pero tengo una prregunta. En el linea de codigo “x=sCadena.length()-1” porque se resta menos uno? se supone que .Length te debe dar el máximo de caracteres. entonces porque se resta uno?

Víctor Cuervo

Víctor Cuervo

Buenas,

Eso es porque los caracteres empiezan en el índice 0 y el último carácter es el tamaño de la cadena-1.

Saludos.

Víctor Cuervo

azc

como invierto el contenido de un archivo.txt q maneja cadenas dentro de el quiero invertir la lineas la ultima q sea la primera y la 1era la ultima linea
(cadenas)

Víctor Cuervo

aldo

como hago para crear el metodo ?

Víctor Cuervo

Víctor Cuervo

@aldo,

Puedes crear un método que sea:

public string invertir(String cadena) {
  // Código
}
Víctor Cuervo

Laura

Puedo invertir char cadena2[][] = new char [1][n];

de la forma mostrada? Una cadena de char puede usar length?

for ( x = cadena2.length()-1; x>=0; x–)
cadenainvertida= cadenainvertida + cadena2.charAt(x);

Víctor Cuervo

Cristian Benavides

No veo necesario el uso de bucles, gastas memoria a lo tonto les dejo una forma de hacerlo en una sola linea de código, Saludos.

var cadena = ‘abcdfghijklmnopqrst’;
var alrrevez = cadena.split(“”).reverse().join(“”);

Víctor Cuervo

ana

holap necesito saber como calcular el bit de paridad vrc y lrc de una palabra cuando es introducida por un usuario en java me puedes ayudar gracias

Víctor Cuervo

Rolas

Gracias, lo estaba intentando con otras formas
pero nunca se me ocurrio la concatenacion
con la cadena invertida
gracias!

Víctor Cuervo

alex

hola si me pudiera ayudar necesito invertir una cadena y aparte agregarle un simbolo
ejemplo : la casa
invertirla
al asac
y despues agregarle un simbolo
a/l/ a/s/a/c

muchas gracias 🙂

Víctor Cuervo

PrinCCeziitha

Disculpaaa m urge un programaa.. que llebe caracteres, nmeros y float, entiendo algo pero no me ejecuta.. si m podras ayudar acerlo xk d vdd voi a reprobar si no lo entrego el lunes… Plzzz comunkate conmigo plz!

Víctor Cuervo

lineadecodigo

@varixela, @bryan,

Para los ejemplos de consonantes y vocales hemos creado
http://lineadecodigo.com/java/contar-las-vocales-de-una-palabra-con-java/

http://lineadecodigo.com/java/contar-las-consonantes-de-una-palabra-con-java/

Espero que os sean de ayuda ambos ejemplos.

Víctor Cuervo

Jeyson

buenas Pues esta execelente el codigo de la Inversion pero no se como podira apliacarla a este codigo que me tira siempre el error del -1, y no se como utilizar en ves del String en Char o algo asi la verdad no lo se muy bien.
import java.io.*;
public class CadenaInvertida
{
public static void main(String[] args)
{
char[] cadena = new char[80];
char[]sCadenaInvertida=new char[80]
int car, x = 0,i=0;
try
{
System.out.println(“Escriba una cadena de caracteres:”);
while ((car = System.in.read()) != ‘\r’ && i =0;x–)
sCadenaInvertida = sCadenaInvertida + sCadena.charAt(x);
System.out.println(sCadenaInvertida[x]);
i++;
}
while (i < cadena.length && cadena[x] != '');

}
catch(IOException ignorada) {}
}
}
Gracias de Antemano y la verdad no se mucho de progra.

Víctor Cuervo

Angel

pues el link que publicastes no funciona y despues de algunos intentos e podido resolver el proglema en un principio pensaba que era con este metodo despues de buscar en contre otra forma publico el codigo enseguida:
import java.io.*;
public class Cadena2{
public static void main(String[] args) throws IOException{
BufferedReader leer = new BufferedReader(new InputStreamReader(System.in));
String frase;
int largo, i;
System.out.println(“Digite una frase: “);
frase=leer.readLine();
largo=frase.length();
StringBuffer word = new StringBuffer(largo);
for(i=0; i<largo;i++){
word.append(frase.charAt(i));
}
for(i=0;i<largo;i++){
String temp = word.substring(0,(largo-1));
word.setCharAt(0,word.charAt(largo-1));
word.delete(1,largo);
word.insert(1,temp);
System.out.println(word.toString());
}
}
}

Víctor Cuervo

lineadecodigo

@Angel,

Te hemos resuelto el ejercicio que nos solicitabas en
http://lineadecodigo.com/java/rotar-array/

Espero que te sea de utilidad. 😀

Víctor Cuervo

lineadecodigo

@lulo,

Qué error te da? Qué es lo que no funciona?

Víctor Cuervo

lulo

no funciona

Víctor Cuervo

lineadecodigo

@Angel,

Tienes que rotar el array con la palabra. Para rotar el array puedes utilizar este simple código.

int a = theArray[0];
int i;
for(i = 0; i < theArray.length-1; i++) theArray[i] = theArray[i+1]; theArray[i]= a;Espero que te sirva.

Víctor Cuervo

lineadecodigo

@bryan,

Puedes aplicar lo mismo que @Varixela pero con esConsonante() y definiendo una expresión regulaar con las consonantes.

Víctor Cuervo

lineadecodigo

@Varixela,

Puedes iterar sobre las letras de la palabra y en cada iteración llamar a un método que sea esVocal().

El método esVocal() podría utilizar una expresión regular con “aeiou”.

Nos ponemos manos a la obra para publicarlo.

Víctor Cuervo

Angel

aver si me pueden ayudar tengo que hacer un programa que pida una cadena de caracteres y despues los imprima de la siguiente forma.
suponiendo que introducio HOLA:
deveria imprimir
HOLA
OLAH
LAHO
AHOL
HOLA
aver si alguien save como hacerlo para que me de una ayudada.

Víctor Cuervo

bryan

bueno porfavor me podrin ayudar kisiera un programa para hallar solamente consonantes y no vocales… espero su ayuda gracias?

Víctor Cuervo

Varixela

hola!
tengo que hacer un código que al introducir una palabra, me despliegue un menú con las vocales y me diga cuantas y cuales vocales hay en la letra introducida.

POR FAVOR NECESITO AYUDA!!

u_U

Víctor Cuervo

lineadecodigo

@wlises r,

Me alegro que te haya sido de utilidad. 🙂

Víctor Cuervo

wlises r.

k jevi, me sirvio mucho para un pequeño soft que hacia k guarda un texto jeje

Víctor Cuervo

lineadecodigo

@trasock,

Por partes… La última letra de una cadena:

char ultimaletra = palabra.charAt(palabra.length()-1);

Para saber si es vocal o consonante puedes utilizar un IF y un SWITCH. Con el IF tienes que comprobar que es una letra. Para ello traduces la letra al ASCII y ves si está entre el código 65 y el 90. Esto son las letras en mayúsculas. Así que tendrás que convertir la letra en mayúsculas.

String palabra = “a”.toUpperCase();
char ultimaletra = palabra.charAt(palabra.length()-1);
int valor = (int)ultimaletra;

if ((valor>=65) && (valor<=90))
System.out.println("Es una letra");
else
System.out.println("No es una letra");

En el caso de que sea letra tienes que aplicar el SWITCH. El cual compruebe si la letra es A, E, I, O, U. Algo así:

switch (ultimaletra) {
case 'A':case 'E': case 'I': case 'O': case 'U':
System.out.println("Es una vocal");
break;
default:
System.out.println("Es una consonante");
}

Espero que te oriente. De todas maneras escribiré un artículo sobre el tema para que te quede más claro.

Víctor Cuervo

trasock

io kiero sabr como imprimir el ultimo caracter de una palabra cualkiera no importa el num de caracteres y ke me diga si el ultimo caracter es una vocal o una constant, ya se ke se usa el if else pero no se como aplicarlo me ayudan???

Víctor Cuervo

diana katherine

graxias

Víctor Cuervo

daniel

Gracias pana fue de mucha ayuda para el proyecto q tenia q hacer de programacion…!

Víctor Cuervo

joel

//metodo que invierte una cadena
static void invertir_cad(String cad){
String cadM , cadm ;
for (int x=cad.length()-1;x>=0;x–)
cadInvertida = cadInvertida + cad.charAt(x);
JOptionPane.showMessageDialog(null,”La cadena en Invertida es:”+cad);
}
no me corre me sale error en
cadInvertida = cadInvertida + cad.charAt(x);

Víctor Cuervo

lineadecodigo

@Javier Arzola,

Muy buena aportación. Muchas gracias.

Víctor Cuervo

Javier Arzola

Muchas gracias me fué de mucha ayuda tu código, era lo que me faltaba para terminar un código para convertir numeros a octal, binario y hexadecimal.

Hice un método reutilizable con tu código:

public class ReverseString {

public static String Reverse(String texto)
{

String cadena;
String CadenaInvertida=””;

cadena=texto;
for (int i=(cadena.length()-1);i>=0;i–)
CadenaInvertida = CadenaInvertida + cadena.charAt(i);

return CadenaInvertida;
}

}

Suerte.

Víctor Cuervo

lineadecodigo

@adriano,

¿No te sirvió el código de arriba?

Víctor Cuervo

adriano

pero que se en java por fa ayudaaaaaa

Víctor Cuervo

adriano

como puedo invertir una cadenas ejemplo: la casa verde, que imprima “verde casa la”. gracias

Víctor Cuervo

J.v.C

A orales esta muy bueno ese tip

Víctor Cuervo

lineadecodigo

@zlatan,

¿Que las invierta directamente una vez insertadas o que al presionar sobre un botón las muestre invertidas en otro campo?

¿Que framework gráfico utilizas: AWT, Swing o SWT?

Víctor Cuervo

zlatan

como le hago para que en una interfaz, al agregar una cadena invierta las letras al reves

Víctor Cuervo

gosperro

String cadena=”lo que quieran”;
StringBuilder builder=new StringBuilder(cadena);
cadena=builder.reverse().toString();

Víctor Cuervo

Victor Manrique

como hago para ke esa misma palabra invertida, la eleve a la potencia ejemplo (juan)3 = juan juan juan
louego sacarles sus sufijos ejemplo
juan= juan , uan, an, n
gracias si me lo puedes enviar a mi correo, gracias linea de codigo

Víctor Cuervo

TeRe

como puedo hacer k se invierta una palabra de 20 letras????
osea cual seria el codigo.
y como puedo en un programa llamar a otro programa???

Víctor Cuervo

medusa

hola alguien sabe como invertir una cadena , palabra por palabra llamandola de un archivo test y usando la consola se los agradeceria muchoooo es pa mi examen

Víctor Cuervo

Luna

este me sirvio muchisimo
gracias por poner articulos como este

Víctor Cuervo

juanito

los amo a todos , informaticos lindos guapos sabrosos, los quiero muxo ojala los conozca algun dia y les pueda llegqar a conocer intimamente los amooooooooo besitos

Víctor Cuervo

chepe

q onda mucha com van yo quisiera sbaer si no me pueden dar el codigo para recorrer una cadena de string caracter por caracter

Víctor Cuervo

azmic

q tal.. necesito saber como disfrasar una cadena de el usuario escribe se le kiten 2 letras, si es F q se imprima D

de una cadena

String s=”hola mundo”

como hacer q se imprime de la siguiente manera

“fnjx knlbn”

sele reducen en 2 letras
si algien me puede ayudar mil gracias

Víctor Cuervo

juan

me siento de la chingada no le entiendo nada a lo de la programacion creo que no sirvo para esto ni para nada de todas formas grax por la informacion pues si alguien que sepa programar me pudiera dejar su correo aqui para agregarlo grax

Víctor Cuervo

jose

k´buena informacion gracias

Víctor Cuervo

alfonso

gracias por esta informacion me sirvio para resolver untrabajo de programacion…………

Víctor Cuervo

lineadecodigo

@Ely,

Hemos publicado el código de como convertir una cadena a mayúsculas.

Espero que sea de ayuda.

Víctor Cuervo

FLRA

Te paso todo el codigo, captura una cadena, eliges a k kieres k se convierta y te la imprime convertida!

class MayusMinus
{
public static void main (String args[])
{
InputStreamReader isr;
isr=new InputStreamReader(System.in);
BufferedReader br;
br=new BufferedReader(isr);
String cadena;
int opc;
try{
System.out.println(“Cadena:”);
cadena=br.readLine();
System.out.println(“1.Minusculas 2.Mayusculas:”);
opc = Integer.parseInt( br.readLine());
System.out.println(“”);
if(opc==1)
{ System.out.println(cadena.toLowerCase());}
else
{
if(opc==2)
{ System.out.println(cadena.toUpperCase());}
}
}
catch(IOException ex)
{System.out.println(“Ocurrió error al leer”);
return;
}
}
}

Víctor Cuervo

Ely

como hago una cadena q me cnvierta letras minusculas a mayusculas??’

Víctor Cuervo

andree

esto va para felix … pues deberias poner una condicional (if) cosa que el usuario no pueda meter mas de tres caracteres

ejemplo:

if(cad.length==3){
// proceso a realizarse
}else{
System.out.print(“solo se aceptan cadena de tres caracteres como maximo”);
}

Víctor Cuervo

felix

bueno,pero como hago para invertir una cadena que solo me admita 3 caracteres como maximo o sea que el usuario solo pueda digitar 3 caracteres.

Víctor Cuervo

a

perdon 😀 si sale , se me olvido declarar la “cadenainvertida” inicializarla con ” ” . thx

Víctor Cuervo

a

no sale :S

¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

*