Значение точки типирования - PullRequest
0 голосов
/ 01 декабря 2011

Я работаю над заданием для моего курса "Введение в 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));
    } 
}

Вот метод из другого класса, который передает точечный объект:

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]);
}

Ответы [ 2 ]

0 голосов
/ 02 декабря 2011

Какой смысл у вашего объекта 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 голосов
/ 01 декабря 2011
  1. Ваши Point объекты абсолютно ничего не делают.

  2. Сортируя целые числа, хранящиеся в col, вы явно не сортируете ни один объект Pointp, вы знаете.Все, что вы изменяете, это содержимое col, но оно отсоединено от других данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...