我正在为我的Java入门课程编写一个作业,而我目前正试图对整数数组进行排序。
我从点对象数组p
获取值,并将它们传递给相同大小的pSize
的int数组。我需要的是将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));
}
}
这是来自另一个传递点对象的clas的方法:
public void checkWin(Point[] p) {
doCheckWin dcw = new doCheckWin(p);
dcw.checkHorizontal();
}
当我将数组打印到屏幕时,值为int ...使用getX
将它们更改为double,但是当转型为int
时它不起作用...
问题是:
x
(即:10.0)的值类型转换为整数不起作用。当在屏幕上打印结果时,我仍然得到10.0。Arrays.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]);
}
答案 0 :(得分:0)
您的Point
个对象什么都不做。
通过对col
中存储的整数进行排序,您显然不会对任何Point
对象或p
进行排序。您修改的只是col
的内容,但它们与其他数据断开连接。
答案 1 :(得分:0)
你的Point对象有什么意义(没有双关语意)?
p []的内容是什么?它是像你说的Point对象数组吗?如果是这样,为什么要从点对象创建点对象?
看起来你想要这样做:
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]