Olá,
Nao estou entendendo este programa.Pesquisei em apostilas,artigos mas nao enconterei nada referente a isso.
Porque o programa compila e imprimi “28”???
Outra coisa que eu nao entendi é esse “atfd”. Alguem poderia por favor me explicar?
Bom, vamos por partes… o “atfd” são os argumentos da linha de comando… geralmente as pessoas colocam o nome desta variável de “arg” ou “args”, mas não precisa necessáriamente ser estes… quem fez o programa que vc postou queria mudar um pouco… sem problemas…
Em relação a ele imprimir “28” é simples, o método read() da classe RandomAcessFile lê um byte e retorna um inteiro informando o proximo byte ou -1 caso seja o final do arquivo, e logo se imprime na saida padrão… na linha:
System.out.println(raf.read());
Entendeu???
A
AlunoJavaPJ
Mais ou menos. O arquivo que ele esta lendo vai ser os numeros de 500 ate 600. É isso mesmo?
Tem como voce explicar dando algum exemplo?
V
victorpintoPJ
"AlunoJava":
Mais ou menos. O arquivo que ele esta lendo vai ser os numeros de 500 ate 600. É isso mesmo?
Tem como voce explicar dando algum exemplo?
Não, ele vai escrever os números que correspondem ao byte 500, 501...., 599, 600.
Faça assim que vai ver o que ele está escrevendo em "outro idioma":
E o raf.seek (40); vai ser o 40° item escrito no arquivo.
A
AlunoJavaPJ
Deixa ver se eu entendi victor.
Mas entao o quadragesimo(40º) item escrito vai ser “540”???
Porque o programa imprimi “28”?? Da onde saiu esse 28?
V
victorpintoPJ
Ele não está escrevendo a sequencia de inteiros 500, 501…, 599, 600.
Ele está escrevendo o Byte 500, Byte 501, Byte 502…, Byte 600.
Por sinal, o Byte 540 vai significar 28. Tente colocar o print que eu colei no post anterior, que ele vai transformar os Bytes em numeros pra você entender.
A
AlunoJavaPJ
Obrigado!!! Vou testar sim, é que estou trabalhando por isso eu nao testei ainda.
Este programa é um exercicio escrito de um concurso militar, seria possivel resolver ele só analisando o programa? Tinha a opcao de resposta que o programa imprimi “C) 540” e a opcao que o programa imprimi “D) 28”.
J
JavaDropsPJ
byte vai de -128 a 127, certo?
540 cabe aí? Não.
Depois que passa do 127 volta no -128 e vai somando…
Da primeira vez que chega no 0 temos 256, na segunda 512.
Para chegar no 540…
Bingo! 28.
A
AlunoJavaPJ
Legal!!!Entendi!!!
Obrigado pela grande dica JavaDrops, ficou mais claro ainda.
Obrigado a todos pela valiosa ajuda, ao victor e ao bruno.