Olá pessoal!
Sou novo em Java e tenho em base ao meu estudo o Big java do Cay Horstmann. Estou realizando seu exercícios de programação, porém alguns deles não estou conseguindo resolver. Então peço a ajuda de vocês para que possam ajudar a resolver esses exercícios. Se não conseguem resolver pelo menos de dicas de como fazer.
Bom, vou pôr alguns agora e com o tempo vou acrescentando mais. Obrigado!
[quote]P5.5 - Escreva um programa que desenhe um círculo com raio 100 e centro (110, 120). Peça que o usuário especifique as coordenadas x e y de um ponto. Se o ponto estiver dentro do círculo exiba a mensagem “Parabéns”. Caso contrário, exiba a mensagem “Você perdeu”. No seu exercício, defina uma classe Circulo e um méto boolean isInside(Point2D.Double p).
O que já fiz:
[code]
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Color;
import java.awt.Font;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Point2D;
import javax.swing.JOptionPane;
public class Circulo extends Applet
{
private double x;
private double y;
public Circulo()
{
String input = JOptionPane.showInputDialog("x:");
x = Integer.parseInt(input);
input = JOptionPane.showInputDialog("y:");
y = Integer.parseInt(input);
}
public void paint(Graphics g)
{
Graphics2D g2 = (Graphics2D)g;
Point2D.Double p = new Point2D.Double(x,y);
//desenha círculo
Ellipse2D.Double circulo = new Ellipse2D.Double(10, 10, 100, 100);
g2.draw(circulo);
//desenha ponto
Ellipse2D.Double ponto = new Ellipse2D.Double(x - 1, y - 1, 2, 2);
g2.draw(ponto);
//desenha mensagem
Font font = new Font("Monospaced", Font.PLAIN, 12);
String message = "";
if(isInside(p))
{
message = "Parabéns";
g2.drawString(message, 10, 130);
}
else
{
message = "Você perdeu";
g2.drawString(message, 10, 130);
}
}
public boolean isInside(Point2D.Double p) { ... }
}[/code]
Não sei como faze o método isInside. Devo usar uma fómula matemática
para saber se está dentro ou fora? Me ajudem, por favor.[/quote]
[quote]P6.3 - Vôo de um projetil. Suponha que uma bala de canão seja projetada verticalmente no ar a uma velocidade inicial v0. Qualquer livro de matemática informará que a posição da bala depois de t segundos é s(t) = -0,5 x g x t x t x v0 x t. onde g = 9,81 m/(s * s), a força da gravidade da Terra. Nenhum livro de matemática menciona por que alguém iria querer realizar essa experiência obviamente perigosa; assim, nós a realizaremos na segurança do computador.
Na verdade, vamos confirmar o teorema através de cálculos com uma simulação. Na nossa simulação, vamos considerar a maneira como a bala se move em intervalos muito curtos de tempo deltaT. Em um intervalo curto de tempo, a velocidade v é quase constante, e podemos calcular a distância que a bala se move como deltaS = v x deltaT. No nosso programa, simplesmente vamos configurar
double deltaT = 0.01;
e atualizar a posição por
s = s + v * deltaT;
A velocidade muda constantemente - na verdade, ela reduz com a força gravitacional da terra. Em um intervalo curto de tempo, v diminui de cordo com g x deltaT e devemos manter a velocidade atualizada como
v = v - g * deltaT;
Na próxima iteração, usa-se a nova velocidade para atualizar a distância.
Agora execute a simulação até que a bala caia de volta na terra. Obtenha a velocidade inicial como uma entrada(100 m/s é um bom valor). Atualize a posição e a velocidade 100 vezes por segundo, mas imprima a posição somente a cada segundo completo. Utilize uma classe BalaDeCanhao.
O que já fiz:
[code]
import java.text.NumberFormat;
public class BalaDeCanhao
{
private double v;
private double deltaT;
private double g;
private double s;
public BalaDeCanhao()
{
v = 100;
deltaT = 0.01;
g = 9.81;
s = 0;
}
public void calculaPosicao()
{
NumberFormat formatter = NumberFormat.getNumberInstance();
formatter.setMaximumFractionDigits(2);
boolean done = false;
while(!done)
{
s += v * deltaT;
v += -g * deltaT;
deltaT += 0.01;
if(deltaT % 1 == 0)
System.out.println("Posição: " + s + "Velocidade: " + v);
if(s <= 0)
done = true;
deltaT = Double.parseDouble(formatter.format(deltaT));
}
}
}[/code]
Estou com problema no
deltaT = Double.parseDouble(formatter.format(deltaT));
Alguém sabe me dizer o que há de errado com isso?[/quote]