Boa noite a todos, estou estudando pelo livro “BigJava” e teve um exercício que fiquei na dúvida se é isto mesmo:
publicclassBaladeCanhao{privatestaticfinaldoubledeltaT=0.01;privatedoublevelocidade;privatedoubledistancia;privateStringmensagem;publicBaladeCanhao(doubleaVelocidade){velocidade=aVelocidade;velocidade-=9.81*deltaT;distancia+=velocidade*deltaT;}publicStringimprime(){intcontador=1;while(distancia>=0){if(contador%100==0){velocidade-=9.81*deltaT;distancia+=velocidade*deltaT;mensagem="A velocidade atual é "+velocidade+" e a distância atual é "+distancia;System.out.println(mensagem);}else{velocidade-=9.81*deltaT;distancia+=velocidade*deltaT;}contador++;}returnmensagem;}}
Recebo um valor “velocidade” que será 100 e por sua vez atualiza a “distancia” e a “velocidade”. Enquanto a “distancia” for positiva vou fazendo atualizações da “distancia” e da “velocidade”, no entanto, toda vez que atingir um “deltaT” = 1, ou seja, depois de executar as atualizações 100 vezes, preciso imprimir os atuais valores da “velocidade” e da “distancia”.
Gostaria que avaliassem a sintaxe da minha solução.
Mas qual é a sua dúvida em relação ao código? Por algum motivo, ele não compila? Há algum erro?
P
professor.adriano
Compilou sim. A questão é que gostaria que alguém avaliasse a forma como implementei, se a escrita está boa…
Obrigado pela atenção
adriano_si
A questão é: fez o que você queria ??? Se sim, é sinal de que o seu código está “certo”…
Precisaríamos apenas fazer uma avaliação de onde ele pode melhorar…
Abs []
P
professor.adriano
Fazer fez.
Vou dar uma analisada mais apurada…
Obrigado a todos
P
professor.adriano
Em outra questão foi pedido que refizesse a classe “BaladeCanhao”, refiz o código, só que para os valores de “angulo” entre 0 e 90, não sai nada impresso na tela.
Alguém saberia me dizer o porque?
publicclassBaladeCanhao{privatestaticfinaldoubledeltaT=0.01;privatedoublevelocidadeInicial;privatedoublevelocidadeVertical;privatedoublevelocidadeHorizontal;privatedoubledistanciaVertical;privatedoubledistanciaHorizontal;privatedoubleangulo;privateStringmensagem;publicBaladeCanhao(doubleaVelocidade,doubleoAngulo){velocidadeInicial=aVelocidade;angulo=oAngulo;velocidadeVertical=velocidadeInicial*Math.sin(angulo)-9.81*deltaT;velocidadeHorizontal=velocidadeInicial*Math.cos(angulo);distanciaVertical+=velocidadeVertical*deltaT;distanciaHorizontal+=velocidadeHorizontal*deltaT;}publicStringimprime(){intcontador=1;if(angulo==90){while(distanciaVertical>=0){if(contador%100==0){velocidadeVertical=velocidadeVertical*Math.sin(angulo)-9.81*deltaT;distanciaVertical+=velocidadeVertical*deltaT;mensagem="O projétil está subindo, e sua velocidade atual é "+velocidadeVertical+" e a distância atual é "+distanciaVertical;System.out.println(mensagem);}else{velocidadeVertical=velocidadeVertical*Math.sin(angulo)-9.81*deltaT;distanciaVertical+=velocidadeVertical*deltaT;}contador++;}}elseif(0<=angulo&&angulo<90){while(distanciaVertical>=0){if(contador%100==0){velocidadeVertical=velocidadeInicial*Math.sin(angulo)-9.81*deltaT;velocidadeHorizontal=velocidadeInicial*Math.cos(angulo);distanciaVertical+=velocidadeVertical*deltaT;distanciaHorizontal+=velocidadeHorizontal*deltaT;mensagem="O projétil desloca-se horizontalmente e verticalmente,"+" e sua velocidade vertical atual é "+velocidadeVertical+" e a horizontal é "+velocidadeHorizontal+", e a distância vertical atual é "+distanciaVertical+" e a horizontal é "+distanciaHorizontal;System.out.println(mensagem);}else{velocidadeVertical=velocidadeInicial*Math.sin(angulo)-9.81*deltaT;velocidadeHorizontal=velocidadeInicial*Math.cos(angulo);distanciaVertical+=velocidadeVertical*deltaT;distanciaHorizontal+=velocidadeHorizontal*deltaT;}contador++;}}else{mensagem="Forneça um valor de ângulo entre 0 e 90 graus.";System.out.println(mensagem);}returnmensagem;}}