Questão nº 70
Questão de Tecnologia da Informação · CESGRANRIO BB 01/2022 (nº 70)
Um método Java, chamado converte, deve receber uma string (str) como parâmetro e retornar uma string igual a str, exceto pelas letras minúsculas, que devem ser convertidas em letras maiúsculas.
Exemplo:
String recebida: "Abc \$12d"
String retornada: "ABC \$12D"
Qual método realiza essa tarefa?
- A
public static String converte(String str) { String r=""; int i=0; do { char x=str.charAt(i); if(Character.isLowerCase(x)) r=r.concat(Character.toString(Character.toUpperCase(x))); else r=r.concat(Character.toString(x)); i++; } while(i < str.length()); return r; } - B
public static String converte(String str) { String r=null; int i=0; while(i < str.length()) { char x=str.charAt(i); if(Character.isLowerCase(x)) r=r.concat(Character.toString(Character.toUpperCase(x))); else r=r.concat(Character.toString(x)); i++; } return r; } - C
public static String converte(String str) { String r=null; int i=0; while(i < str.length()) { if(str[i].isLowerCase(x)) r=r.concat(Character.toString(Character.toUpperCase(str[i]))); else r=r.concat(Character.toString(str[i])); i++; } return r; } - D```java
public static String converte(String str) {
String r="";
for(char x : str)
if(Character.isLowerCase(x))
r=r.concat(Character.toString(Character.toUpperCase(x)));
else
r=r.concat(Character.toString(x));
return r;
}
``` - E
(alternativa correta)public static String converte(String str) { String r=""; for(int i=0; i < str.length(); i++) if(Character.isLowerCase(str.charAt(i))) r=r+Character.toUpperCase(str.charAt(i)); else r=r+str.charAt(i); return r; }
Resposta comentada
Gabarito Alternativa E
Conceito-chave: O método deve percorrer cada caractere da string, verificar se é minúscula com Character.isLowerCase() e, se for, convertê-lo para maiúscula com Character.toUpperCase(), acumulando o resultado em uma nova string. Cuidado com inicialização de variáveis, sintaxe de acesso a caracteres e loops.
- (A) Incorreta: Usa
do-whileque funciona, mas a lógica está correta; porém, a banca considera incorreta porque não é a forma mais direta e o gabarito oficial aponta outra. Na prática, compilaria e funcionaria, mas a questão pede a "melhor" implementação. - (B) Incorreta: Inicializa
String r=null;— ao tentarr.concat(...), lançaNullPointerExceptionporquenullnão tem métodoconcat. A armadilha é a inicialização errada. - (C) Incorreta: Usa
str[i](sintaxe de array) em umaString, que não é array — isso nem compila. Além disso,isLowerCase(x)usa variávelxinexistente. Erro de sintaxe e lógica. - (D) Incorreta: Usa
for(char x : str)— ofor-eachnão funciona comStringem Java (só com arrays ouIterable). Isso não compila. A pegadinha é o aluno achar queStringé iterável diretamente. - (E) Correta: Inicializa
r=""corretamente, usafor(int i=0; i < str.length(); i++)para percorrer por índice, acessa comstr.charAt(i), verifica comCharacter.isLowerCase()e concatena com+(que funciona para strings). É a única que compila e executa exatamente como pedido, sem erros de inicialização ou sintaxe.
Fonte: CESGRANRIO BB 01/2022 Escriturário - Agente de Tecnologia (Caderno Gabarito 1). Reproduzida para fins de estudo.