2011-12-01 58 views
0

我正在为我的Intro to Java课程进行一项任务,目前我正试图对整数数组进行排序。类型转换点值

我从点对象数组中获取值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)); 
    } 
} 

这里的从另一个classthat该方法通过点对象:

public void checkWin(Point[] p) { 
    doCheckWin dcw = new doCheckWin(p); 
    dcw.checkHorizontal(); 
} 

当我打印阵列筛选,的值是整数...用getX它们改变为双但类型转换到int当它不工作...

的问题是:

  1. 将类型为x(即:10.0)的值转换为整数不起作用。当在屏幕上输出结果时,我仍然得到10.0。
  2. 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

是否确定要打印正确的阵列? – Kylo

+0

你正在打印col还是p?你能显示打印代码吗? –

+1

你可以添加你用来打印数组的代码吗?也不需要创建一个新的Point对象或强制转换 - 只需要这样做:col [i] = p [i] .x;最简单的选择通常是最好的选择。 :) –

回答

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] 
+0

。我已经用我的全班更新了我的OP,也许它会有所帮助。我已经做了一些非常类似于上面的东西,但我仍然获得双值而不是整数,并且它没有排序... – lemonpole

+0

无视最后的评论,现在它全部神奇地工作。谢谢! – lemonpole

0
  1. 您的Point物体完全没有。

  2. 通过整理存储在col很显然你不来排序任何Point对象或p整数,你知道的。您修改的所有内容均为col的内容,但它们是与其他数据断开的

+0

我没有尝试对点对象进行排序,我试图对输入后得到的整数数组的值进行排序,这些值的类型为x'值 – lemonpole