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;

我正在为我的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));
    } 
}
当我将数组打印到屏幕上时,值是int…使用
getX
将它们更改为double,但当将其键入
int
时,它不起作用

问题是:

  • x
    (即:10.0)的值转换为整数不起作用。当在屏幕上打印结果时,我仍然得到10.0
  • array.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]