Me ajude a resolver esse programa a baixo, eu gostaria de colocar para o usuario digitar a palavra para aparecer de trás para frente, e se o usuario não digitar uma palavra com 4 caracteres o programa deverá ser encerrado com a resposta: Digite apenas palavras de 4 caracteres.
eu não consegui colocar para o usuario digitar a palavra e nem para aparecer a mensagem se for digitado mais de 4 caracteres.
package Aula;
public class Atividade {
public static void main(String[] args) {
String palindrome = “java”;
int len = palindrome.length();
char[] tempCharArray = new char[len];
char[] charArray = new char[len];
// put original string in an array of chars
for (int i = 0; i < len; i++) {
tempCharArray[i] = palindrome.charAt(i);
}
// reverse array of chars
for (int j = 0; j < len; j++) {
charArray[j] = tempCharArray[len - 1 - j];
}
String reversePalindrome = new String(charArray);
System.out.println(reversePalindrome);
}
}
Para fazer o que vc quer, vc só precisa substituir essa linha:
String palindrome = "java";
Por essas 5:
String palindrome = new Scanner(System.in).nextLine();
if (palindrome.length() != 4) {
System.out.println("Digite apenas palavras de 4 caracteres");
return;
}
O código completo ficou assim:
import java.util.Scanner;
class Atividade {
public static void main(String[] args) {
String palindrome = new Scanner(System.in).nextLine();
if (palindrome.length() != 4) {
System.out.println("Digite apenas palavras de 4 caracteres");
return;
}
int len = palindrome.length();
char[] tempCharArray = new char[len];
char[] charArray = new char[len];
for (int i = 0; i < len; i++) {
tempCharArray[i] = palindrome.charAt(i);
}
for (int j = 0; j < len; j++) {
charArray[j] = tempCharArray[len - 1 - j];
}
String reversePalindrome = new String(charArray);
System.out.println(reversePalindrome);
}
}
Contudo, pro código ficar mais limpo e correto, vc poderia fazer assim:
import java.util.Scanner;
class Atividade {
public static void main(String[] args) {
try (Scanner sc = new Scanner(System.in)) {
char[] text = sc.nextLine().toCharArray();
int length = text.length;
if (length == 4) {
char[] reversed = new char[length];
for (int i = 0, j = length - 1; i < length; i++, j--) {
reversed[i] = text[j];
}
System.out.printf("Resultado: %s\n", new String(reversed));
} else {
System.out.println("Digite apenas palavras de 4 caracteres");
}
}
}
}
Neste código eu fiz 2 melhorias:
- Coloquei o
Scanner
dentro do try
. O Scanner
é o que usamos pra pegar os dados do usuário e eu o coloquei ali porque quando vc o cria, ele pega recursos do seu computador, e quando vc não precisa mais desses recursos, vc deve devolve-los invocando o método close()
. Quando vc coloca o Scanner
no try
, o método close()
é chamado automaticamente pra vc.
- Eliminei a necessidade do
tempCharArray
usando o método toCharArray()
.
1 curtida
Obrigado amigo, vc tirou minhas dúvidas