gpt4 book ai didi

java - 程序允许您在N维空间中指定点

转载 作者:行者123 更新时间:2023-11-29 04:34:20 24 4
gpt4 key购买 nike

因此,这是我遇到的任务要点:


编写一个名为Point的Java类来表示一个N维点(坐标为双精度)


构造函数应采用任意数量的坐标
该类应具有用于任何坐标的accessor方法
编写toString()以及copy()和equals()助手方法
跟踪每个创建的点
编写一个名为Line的Java类来表示一条线(具有起点和终点)
构造函数参数是起点和终点
当两个点的维数不同时,构造函数必须抛出错误
编写toString()以及copy()和equals()帮助方法
提供getLineLength()方法-在Wiki上查找“欧几里得距离”
跟踪每条创建的线



所以我已经创建了线和点类,但是我不确定是否正确地创建了线或点类。我已经设计了主要方法来从控制台获取输入,并将该输入存储到两个不同的坐标数组中。当我尝试在主机中调用此方法以打印坐标和距离时,我会返回输出:

之间的距离(4.0,5.0)
(2.0,3.0)
(0.0,0.0)
 是>

所以我希望我能在澄清我是否正确创建构造函数以及其他所有内容方面获得帮助。这是到目前为止两个类的代码:

public class Point{

private double[] coordinate1;
private double[] coordinate2;


public Point(double[] array1, double[] array2){
this.coordinate1 = array1;
this.coordinate2 = array2;
}
//method to get array inputs and copy them
public void copy(double[] points1, double[] points2){

double[] coordinate1 = new double[points1.length +1];
for(int copyIndex = 0; copyIndex < points1.length; copyIndex++){
coordinate1[copyIndex] = points1[copyIndex];
}
points1 = coordinate1;

double[] coordinate2 = new double[points2.length +1];
for(int copyIndex = 0; copyIndex < points2.length; copyIndex++){
coordinate2[copyIndex] = points2[copyIndex];
}
points2 = coordinate2;
}
//method to print the coordinates
public void printArray(){

double array1 = coordinate1.length;
double array2 = coordinate2.length;
for (int i = 0; i < array1 && i < array2; i++) {
System.out.println("( " + coordinate1[i] + " , " + coordinate2[i] + " ) ");
}
}
}


public class Line{

private double[] coordinate1;
private double[] coordinate2;
private double distance;

public Line(double[] array1, double[] array2){
this.coordinate1 = array1;
this.coordinate2 = array2;
}
public double getLine(double[] coordinate1, double[] coordinate2){
double diffSquareSum = 0.0;
for(int i=0;i<coordinate1.length;i++) {
diffSquareSum += (coordinate1[i] - coordinate2[i]) * (coordinate1[i] - coordinate2[i]);
}
distance = Math.sqrt(diffSquareSum);
return distance;
}
public String toString(){
return "The distance is " + distance;
}
}


如果需要澄清或扩大我的问题,请告诉我。感谢任何帮助。谢谢。
这是程序一次运行后的预期输出:

例:

输入点#1维度#1或“随机”或“退出”或“帮助”或空白行以继续:3.14
输入点#1尺寸#2或“随机”或“退出”或“帮助”或空白行以继续:0
输入点#1维度#3或“随机”或“退出”或“帮助”或空白行以继续:

输入点#2维度#1或“随机”或“退出”或“帮助”或空白行以继续:0
输入点#2维度#2或“随机”或“退出”或“帮助”或空白行以继续:hEl


该程序允许您指定N维空间中的点:


每个点可以具有不同数量的非零坐标
您可以通过键入“ RANDOM”来请求任意坐标的随机数
输入坐标后,只需按键

点对用于创建线


如果两个点的尺寸不匹配,则会显示错误
创建线时,将提供线距

完成指定点和线后,键入“ EXIT”以显示最终操作统计信息
所有关键字都不区分大小写,可以缩写
随机数将在-1,000.00到+1,000.00之间缩放


输入2号点的尺寸2号或“随机”或“退出”或“帮助”或空白行以继续:2.71
输入2号点的尺寸3号或“随机”或“退出”或“帮助”或空白行以继续:
(3.14,0.0)和(0.0,2.71)之间的距离是4.147734321289154

输入点#1维度#4或“随机”或“退出”或“帮助”或空白行以继续:随机
-> -75.1234
输入点#1维度#5或“随机”或“退出”或“帮助”或空白行以继续:
输入点#2的维数1或“随机”或“帮助”或“退出”或空白行以继续:RA
-> 38.12851983534693
输入点#2的维数2或“随机”或“帮助”或“退出”或空白行以继续:rAnD
-> 74.31366638262983

输入点#2的尺寸#3或“随机”或“帮助”或“退出”或空白行以继续:
哎呀-您试图用不同大小的点创建一条线!

输入点#1尺寸#1或“随机”或“退出”或“帮助”或空白行以继续:退出

您创建了4点:
  (3.14,0.0)
  (0.0,2.71)
  (-75.1234)
  (38.12851983534693,74.31366638262983)
您创建了1行:
  (3.14,0.0)至(0.0,2.71),长度为4.147734321289154

因此,它一直要求坐标加倍并创建一条线,然后在程序关闭时打印出所有形成的线。希望有助于阐明任务要求

最佳答案

目前尚不清楚为什么构造函数会有2个数组-似乎应该只有1个数组来表示所有N个可能的轴。

另外,不清楚如何将坐标传递给构造函数。

像这样使用多个参数?

public class Point {
private double[] coordinates;

public Point(double...coordinates) {
this.coordinates = coordinates;
}
}


还是像这样使用数组?

public class Point {
private double[] coordinates;

public Point(double[] coordinates) {
this.coordinates = coordinates;
}
}


复制方法应该具有以下签名:

Point copy();


以便您返回当前实例的副本。

Line类的要求指示构造函数采用两个 Point,因此它看起来应与此类似:

public Line(Point p1, Point p2);


以及使用 p1p2的方法。

关于java - 程序允许您在N维空间中指定点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42354719/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com