Jump to content

Reverter uma string


amstel
 Share

Recommended Posts

Boa noite, o meu problema é o seguinte, estou a tentar criar um programa que receba uma String do utilizador e que posteriormente a inverta e a mostre no ecrã. Assim se por exemplo o utilizador inserir a string "Ola", o programa deverá mostrar "alO". O código que escrevi foi o seguinte:

Esta primeira parte está numa classe "main"

import java.util.Scanner;
public class main {

public static void main(String[] args) {

	Scanner input = new Scanner(System.in);
	System.out.println("Insira uma String");
	String name = input.nextLine();

	reverse e = new reverse(name);
	e.reverse1();
	e.show();
}

}

E esta parte numa outra classe chamada "reverse"

public class reverse {
private String Namer;

public reverse (String name){													  // construtor
	Namer = name;
	}
public void reverse1(){														   //  função para inverter a String
	String array [] = new String[Namer.length()];
	for (int i=0; i<= Namer.length(); i++){
		array[i]=array[(Namer.length()-i)];
		}
}
public void show (){															//função mostra nova String
	System.out.printf("The new String is: %s", "array");	


	}

}

Ao compilar este código dá-me o seguinte erro:

Insira uma String

asdfasdas

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 9

at reverse.reverse1(reverse.java:17)

at main.main(main.java:11)

Se me puderem ajudar... estou mesmo à nora com isto :-/

Link to comment
Share on other sites

Obrigado pelo esclarecimento,

certo, estava a começar o ciclo em 0 e como a função length() devolve o valor 3 no exemplo da String "Ola" estava a repetir o ciclo 4 vezes, esta parte já percebi 🙂 agora outra dúvida, no método "show" não estou a conseguir imprimir a minha "nova" String, porquê?

primeiro estás a fazer o segunite output:

System.out.printf("The new String is: %s", "array"); 

a string "array" não é claramente a palavra invertida

segundo, e supondo que estás a tentar fazer o output da variável "array", essa variável só vive dentro da função reverse1. no momento em que a função termina, assim essa variável termina de existir, e será por isso que o compilador te dá erro

Edited by HappyHippyHippo
IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Altera o método show() para:

public void show (){
System.out.printf("The new String is: " + array);
}

e põe a variavel array como variavel de instância, em cima junto com o private String Namer;

Mas em vez de estares a criar um objecto que te faça a inversão da string considera fazeres apenas um metodo que te inverta a string, como por exemplo:

private String inverte(String string)
{
  return new StringBuilder(string).reverse().toString();
}

será mais fácil assim

Edited by alexandre1985
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.