我正在为我的Java入门课程编写一份作业,目前我正试图对一组整数进行排序。
我从一个点对象数组p
获取值,并将它们传递给一个大小相同的int数组pSize
。我只需要把x
的point对象的值输入到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));
}
}
下面是传递point对象的另一个类的方法:
public void checkWin(Point[] p) {
doCheckWin dcw = new doCheckWin(p);
dcw.checkHorizontal();
}
当我打印要屏幕的数组时,值是ints...using,getX
将其更改为双倍,但当类型转换为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]);
}
发布于 2011-12-01 12:09:12
你的观点对象的意义是什么(没有双关意)?
p[]的内容是什么?是像你说的点对象数组吗?如果是,为什么要从point对象创建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]
发布于 2011-12-01 11:51:24
Point
对象什么也不做。通过对存储在col
中的整数进行排序,Point
对象或p
进行排序。您修改的所有内容都是col
的内容,但是它们与其他数据断开了连接。https://stackoverflow.com/questions/8347362
复制相似问题