請問這是哪出錯了,小白,該怎么改呢?蟹蟹
package first;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
double abscissa, ordinate;
double length, width;
int count = 0;
Scanner input = new Scanner(System.in);
abscissa = input.nextDouble();
ordinate = input.nextDouble();
length = input.nextDouble();
width = input.nextDouble();
count = input.nextInt();
Rectangle rectangle = new Rectangle(new Coordinate(abscissa, ordinate), length, width);
MonteCarloSimulation monteCarlo = new MonteCarloSimulation(rectangle);
if (monteCarlo.validateRectangle()) {
monteCarlo.setCircle();
if ((Math.abs(monteCarlo.simulation(count) - Math.PI)) <= 1e-3) {
System.out.println("Success");
} else {
System.out.println("failed");
}
} else {
System.out.println("Wrong Format");
}
}
}
class Coordinate{
private double abscissa;
private double ordinate;
public Coordinate() {
}
public Coordinate(double abscissa,double ordinate) {
this.abscissa=abscissa;
this.ordinate=ordinate;
}
public double getAbscissa() {
return abscissa;
}
public void setAbscissa(double abscissa) {
this.abscissa = abscissa;
}
public double getOrdinate() {
return ordinate;
}
public void setOrdinate(double ordinate) {
this.ordinate = ordinate;
}
}
class Circle{
private Coordinate coordinate;
private double radius;
public Circle() {
}
public Circle(Coordinate coordinate,double radius) {
this.coordinate=coordinate;
this.radius=radius;
}
public Coordinate getCoordinate() {
return coordinate;
}
public void setCoordinate(Coordinate coordinate) {
this.coordinate = coordinate;
}
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
}
class Rectangle{
private Coordinate coordinate;
private double width;
private double length;
public Rectangle() {
}
public Rectangle(Coordinate coordinate,double width,double length) {
this.coordinate=coordinate;
this.width=width;
this.length=length;
}
public Coordinate getCoordinate() {
return coordinate;
}
public void setCoordinate(Coordinate coordinate) {
this.coordinate = coordinate;
}
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
public double getLength() {
return length;
}
public void setLength(double length) {
this.length = length;
}
}
class MonteCarloSimulation{
private Rectangle rectangle;
private Circle circle;
public MonteCarloSimulation() {
}
public MonteCarloSimulation(Rectangle rectangle,Circle circle) {
this.rectangle=rectangle;
this.circle=circle;
}
public MonteCarloSimulation(Rectangle rectangle) {
this.rectangle=rectangle;
}
public Rectangle getRectangle() {
return rectangle;
}
public void setRectangle(Rectangle rectangle) {
this.rectangle = rectangle;
}
public Circle getCircle() {
return circle;
}
public void setCircle(Circle circle) {
this.circle = circle;
}
public boolean validateRectangle() {
if(this.rectangle.getLength()==this.rectangle.getWidth()&&this.rectangle.getLength()>0&&this.rectangle.getWidth()>0)
return true;
else
return false;
}
public void setCircle() {
Coordinate coordinate=new Coordinate();
coordinate.setAbscissa(this.rectangle.getCoordinate().getAbscissa()+0.5*this.rectangle.getLength());
coordinate.setOrdinate(this.rectangle.getCoordinate().getOrdinate()-0.5*this.rectangle.getWidth());
this.circle.setCoordinate(coordinate);
this.circle.setRadius(0.5*this.rectangle.getLength());
}
public double simulation(int n) {
long count=0;
int i=0;
for(;i<n;i++)
{
double x=Math.floor(Math.random()*(0.5*this.rectangle.getLength()+1)+this.rectangle.getCoordinate().getAbscissa());
double y=Math.floor(Math.random()*(0.5*this.rectangle.getLength()+1)+this.rectangle.getCoordinate().getAbscissa()-this.rectangle.getLength());
Coordinate coord1=new Coordinate(x,y);
if(getDistance(coord1,this.circle.getCoordinate())<=this.circle.getRadius())
count++;
}
return count/n;
}
public double getDistance(Coordinate coord1,Coordinate coord2) {
double x=coord1.getAbscissa()-coord2.getAbscissa();
double y=coord1.getOrdinate()-coord2.getOrdinate();
return Math.sqrt(x*x+y*y);
}
}
uj5u.com熱心網友回復:
具體錯誤行是142 this.circle.setCoordinate(coordinate);應該是this.circle是null
uj5u.com熱心網友回復:
請問這種怎么改呢,我改了142行,錯誤行又變了,這個不知道怎么改
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
Circle circle = new Circle();circle.setCoordinate(coordinate);
this.setCircle(circle);
this.circle.setRadius(0.5*this.rectangle.getLength());
142你需要new一個新的物件 首先你最外層的物件是一個null,這時候你直接this. 就會報空指標;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/93221.html
標籤:Eclipse
