Java 类型转换点值
我正在为我的Java入门课程做一项作业,目前我一直在尝试对整数数组进行排序 我从点对象数组中获取值,Java 类型转换点值,java,arrays,sorting,Java,Arrays,Sorting,我正在为我的Java入门课程做一项作业,目前我一直在尝试对整数数组进行排序 我从点对象数组中获取值,p,并将它们传递给一个大小相同的int数组,pSize。我只需要点对象的x值被类型转换为int,并对数组进行排序。然而,这并没有发生。代码如下: import java.util.*; import java.awt.*; public class doCheckWin { // Class Fields private Point[] p; private static int pSize;
p
,并将它们传递给一个大小相同的int数组,pSize
。我只需要点对象的x
值被类型转换为int
,并对数组进行排序。然而,这并没有发生。代码如下:
import java.util.*;
import java.awt.*;
public class doCheckWin {
// Class Fields
private Point[] p;
private static int pSize;
/*
Class Constructor.
Creates an array of point objects that holds the user's
location of pieces.
*/
public doCheckWin(Point[] p) {
this.p = p;
pSize = p.length;
}
public void checkHorizontal() {
int[] col = new int[pSize];
for(int i=0; i<p.length; i++) {
col[i] = (int)p[i].getX();
}
Arrays.sort(col);
System.out.println(Arrays.toString(col));
}
}
当我将数组打印到屏幕上时,值是int…使用getX
将它们更改为double,但当将其键入int
时,它不起作用
问题是:
x
(即:10.0)的值转换为整数不起作用。当在屏幕上打印结果时,我仍然得到10.0array.sort(col)
不会对数组进行排序10.0
13.0
12.0
11.0
3.0
我想要什么
3
10
11
12
13
编辑:以下是用于打印阵列的代码:
Arrays.sort(col);
for(int i=0; i<col.length; i++) {
System.out.println(col[i]);
}
Arrays.sort(col);
对于(int i=0;i
您的点
对象完全不起任何作用
通过对col
中存储的整数进行排序,显然不会对任何点
对象或p
进行排序。您所修改的只是col
的内容,但它们与其他数据断开了连接
你的点对象的意义是什么(没有双关语)
p[]的内容是什么?它是一个像你说的点对象数组吗?如果是,为什么要从点对象创建点对象
看起来您希望这样做:
int[] col = new int[pSize];
for (int i = 0; i < p.length; i++) {
col[i] = (int)p[i].getX();
}
Arrays.sort(col);
System.out.println(Arrays.toString(col));
你确定你打印的是正确的数组吗?你打印的是col还是p?你能显示打印代码吗?你能添加你用来打印数组的代码吗?也不需要创建新的点对象或强制转换-只需这样做:col[i]=p[i].x;最简单的选项通常是最好的。:@RussHayward感谢指针,呵呵,我总是倾向于用最困难的方式做事。我确实键入了它,并尝试对其进行排序,但仍然不走运。我不是在对point对象进行排序,而是在键入点的x`ValuesHanks后得到的整数数组进行排序,以供输入。我已经在全班更新了作业,也许会有帮助。我做了一些与上面非常相似的事情,但是我仍然得到了双值而不是整数,而且它没有排序…忽略最后的评论,现在一切都神奇地工作了。谢谢
int[] col = new int[pSize];
for (int i = 0; i < p.length; i++) {
col[i] = (int)p[i].getX();
}
Arrays.sort(col);
System.out.println(Arrays.toString(col));
int pSize = 5;
Point[] p = new Point[pSize];
Random z = new Random();
for (int i = 0; i < p.length; i++) {
p[i] = new Point(i+z.nextInt(5), i);
}
System.out.println(Arrays.toString(p));
int[] col = new int[pSize];
for (int i = 0; i < p.length; i++) {
col[i] = (int)p[i].getX();
}
Arrays.sort(col);
System.out.println(Arrays.toString(col));
[java.awt.Point[x=3,y=0], java.awt.Point[x=3,y=1], java.awt.Point[x=6,y=2], java.awt.Point[x=3,y=3], java.awt.Point[x=4,y=4]]
[3, 3, 6, 3, 4]
[3, 3, 3, 4, 6]