Итак, я только начал работать с ArrayList
и awt.Point
. То, что я пытаюсь сделать здесь, - вывести массив координат X и Y, когда пушечное ядро находится в полете. Однако, когда я запускаю программу, я получаю кучу Point[x=0,y=0]
в массиве.Координаты по координатам полёта в полете Cannonball
Я думаю, что часть проблемы может быть взамен Point
. Я возвращаю Point
в bowling.Move()
и bowling.getLocation()
. Возможно, что кто-то переопределяет другого? Я чувствую, что я близок к моему результату, но теряю, как туда добраться.
import java.awt.Point;
import java.util.ArrayList;
import java.util.Scanner;
public class Cannonball {
public static void main(String[] args) {
//Part 1: Open Scanner
Scanner keyboard = new Scanner(System.in);
//Part 2: Create a new cannonball
Ball bowling = new Ball(0);
//Part 3: Ask user for initial angle and starting velocity
System.out.println("Alright, give us the angle at which to fire: ");
bowling.setAngle(keyboard.nextDouble());
System.out.println("And what is the initial velocity: ");
bowling.setVel(keyboard.nextDouble());
//Part 4: Return the points of the cannonball's flight
for(int i=0; i<bowling.shoot.size(); i++) System.out.println(bowling.shoot);
//Part x: Close input
keyboard.close();
}
}
class Ball{
private double xPos, yPos, deltaSec;
private double alpha, v;
private double yVel, xVel;
private static final double gravity = -9.81;
public Ball(double xPos){
this.xPos=xPos;
yPos=0;
}
public Point move(double deltaSec){
xPos += xVel*deltaSec;
yPos += yPos*deltaSec;
return new Point();
}
public void yVel(){
yVel=v*Math.sin(alpha)*(deltaSec*gravity);
}
public void xVel(){
xVel=v*Math.cos(alpha);
}
public Point getLocation(double xPos, double yPos){
return new Point();
}
public void setAngle(double aplha){
this.alpha=alpha;
}
public void setVel(double v){
this.v=v;
}
public ArrayList<Point> shoot = new ArrayList<Point>();
{
while(deltaSec<60){
move(deltaSec);
shoot.add(getLocation(xPos, yPos));
deltaSec++;
}
}
}
Итак, если бы я должен был установить общедоступную точку getLocation (int xPos, int yPos), будет ли это не совпадать с вашей точкой (x, y)? Мои извинения, все еще изучая, как правильно строить конструкторы. – Truzen
@Truzen no, 'getLocation (x, y)' - это просто метод, принимающий координаты x и y и возвращающий новый экземпляр Point. Однако этот экземпляр должен знать значения x и y. Я добавлю пример. – Thomas
Этот пример объясняет преобразование моей точки из double в int. Спасибо. Я отредактировал 'return new Point', чтобы включить '(int) xPos, (int) yPos' и сбросил точку возврата из 'move' и установил ее в void. Тем не менее, он все еще создает точки «x = 0, y = 0». Хмм .... – Truzen