Sou iniciante em java e estou fazendo um programa que eu deixe as primeiras letras da frase em maiusculo mas nao posso utilizar o split().
Estou tentando fazer mas esta apresentando erros, alguem poderia me ajudar ?
Segue a interface, a classe que implementa e o main
public interface GMaiusculo {
String converteMaiusculo(String par);
}
public class LetraMaiuscula implements GMaiusculo {
@Override
public String converteMaiusculo(String par){
public converte(String palavra) {
palavra = palavra.substring(0,1).toUpperCase().concat(palavra.substring(1));
return palavra;
}
}
}
public class ConvertePalavra {
public static void main(String[] args) {
GMaiusculo letra= new LetraMaiuscula();
letra= letra.converteMaiusculo("teste,banana laranja");
System.out.println(letra);
}
Seu programa tá um pouco complicado porque tem vários erros de sintaxe.
No trecho abaixo parece que vc tá declarando um constructor dentro de um método, o que não faz sentido de muitas formas.
public String converteMaiusculo(String par){
public converte(String palavra) {
// ...
}
}
Já no trecho abaixo vc está atribuindo o retorno do método converteMaiusculo() à variável letra, só que letra é do tipo GMaiusculo e o retorno de converteMaiusculo() é do tipo String.
Seu programa corrigido de forma que compila e executa ficaria assim:
interface GMaiusculo {
String converteMaiusculo(String par);
}
class LetraMaiuscula implements GMaiusculo {
@Override
public String converteMaiusculo(String palavra) {
palavra = palavra.substring(0, 1).toUpperCase().concat(palavra.substring(1));
return palavra;
}
}
class ConvertePalavra {
public static void main(String... args) {
GMaiusculo letra = new LetraMaiuscula();
String palavraConvertida = letra.converteMaiusculo("teste,banana laranja");
System.out.println(palavraConvertida);
}
}
Só que ele só deixa maiúscula a primeira letra.
Se vc só vai lidar com caracteres simples como letras, números, pontuação e alguns outros símbolos, não vai precisar de muita coisa e acredito que o código abaixo já seja o suficiente.
import java.util.Arrays;
import java.util.List;
class App {
public static String capitalize(final String str) {
final List<Character> delimiters = Arrays.asList(' ', ',', '.');
if (str != null && str.trim().length() > 0) {
final char[] characters = str.toCharArray();
final int strLen = str.length();
characters[0] = Character.toUpperCase(characters[0]);
for (int i = 1; i < strLen; i++) {
if (delimiters.contains(characters[i - 1])) {
characters[i] = Character.toUpperCase(characters[i]);
}
}
return String.valueOf(characters);
}
return str;
}
public static void main(String... args) {
System.out.println(capitalize("teste,banana laranja"));
}
}
Mas para uma solução mais completa, que consiga lidar bem com caracteres além do plano básico do Unicode, recomendo estudar o código da biblioteca Apache Commons, vou deixar os trechos abaixo.