Questão nº 53
Questão de Java SE · FCC TRE-PR 2017 (nº 53)
Considere o programa Java abaixo.
```java
public class JavaApplication1 {
public static void main(String[] args) {
String hexa = "B5AF";
int decimal = 1024;
System.out.println("\nValor Hexadecimal: " + hexa);
System.out.println("Valor Hexa em Decimal: " + ......
```
I
```java
);
System.out.println("\nValor Decimal: " + decimal);
System.out.println("Valor Decimal em Binário: " + ......
```
II
```java
);
System.out.println("Valor Decimal em Hexadecimal: " + ......
```
III
```java
);
System.out.println("Valor Decimal em Octal: " + ......
```
IV
```java
);
}
}
```
As lacunas de I a IV devem ser substituídas por expressões Java que completem adequadamente os comandos. Em condições ideais, é correto afirmar que a lacuna
- AI deve ser completada com: Integer.toHexadecimal(hexa, 16) e a lacuna II, após ser corretamente preenchida e o programa executado, resulta em: Valor Decimal em Binário: 1000000000.
- BII deve ser completada com: Integer.toBinString(decimal) e a lacuna IV deve ser preenchida com: Integer.toOctString(decimal).
- CIII deve ser completada com: Integer.toHexString(decimal) e a lacuna II, após ser corretamente preenchida e o programa executado, resulta em: Valor Decimal em Binário: 10000000000. (alternativa correta)
- DIV deve ser completada com: Integer.parseInt(decimal, 8) e a lacuna III, após ser corretamente preenchida e o programa executado, resulta em Valor Decimal em Hexadecimal: 400.
- EI deve ser completada com: Integer.parseInt(decimal, 16) e a lacuna III, após ser corretamente preenchida e o programa executado, resulta em: Valor Decimal em Hexadecimal: A24.
Resposta comentada
Gabarito Alternativa C
Em Java, a classe Integer oferece métodos estáticos para converter números entre diferentes bases numéricas (decimal, binário, hexadecimal e octal), tanto de String para int quanto de int para String.
- (A) Incorreta:
Integer.toHexadecimalnão é um método válido; o correto para converter uma string hexadecimal para decimal éInteger.parseInt(String s, int radix). Além disso, a conversão de 1024 para binário é10000000000(11 dígitos), não1000000000(10 dígitos). - (B) Incorreta: Os métodos
Integer.toBinStringeInteger.toOctStringnão existem; os nomes corretos sãoInteger.toBinaryStringeInteger.toOctalString, respectivamente. - (C) Correta: A lacuna III pede a conversão de um valor decimal (
decimal) para hexadecimal, e o método correto para isso éInteger.toHexString(decimal). A lacuna II pede a conversão de decimal para binário, que é feita porInteger.toBinaryString(decimal). O valor 1024 em decimal é , que em binário é representado por1seguido de 10 zeros, ou seja,10000000000. Ambas as afirmações estão corretas. - (D) Incorreta: A lacuna IV pede a conversão de um
int(decimal) para umaStringoctal, masInteger.parseInt(decimal, 8)tenta converter umaStringparaint, e o primeiro argumento (decimal) é umint, não umaString. O método correto seriaInteger.toOctalString(decimal). Embora a conversão de 1024 para hexadecimal (400) esteja correta, a primeira parte da alternativa está errada. (Distrator mais tentador): Esta alternativa é uma armadilha comum, pois mistura o uso deparseInt(que converte de String para int) com a necessidade de converter de int para String em outra base, além de usar um tipo de dado incorreto (decimaléint, nãoString) para o primeiro argumento deparseInt. O fato de a segunda parte da afirmação (o resultado da conversão para hexadecimal) estar correta pode levar o aluno a erro. - (E) Incorreta: A lacuna I pede a conversão de uma
Stringhexadecimal (hexa) para decimal, masInteger.parseInt(decimal, 16)tenta usar umint(decimal) como a string a ser convertida. O correto seriaInteger.parseInt(hexa, 16). Além disso, 1024 em hexadecimal é400, nãoA24.
Fonte: FCC TRE-PR 2017 Analista Judiciário - Área Apoio Especializado - Especialidade Análise de Sistemas (Caderno Tipo 1). Reproduzida para fins de estudo.