2011-12-01 64 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