我有一個家庭作業,並且有一點麻煩。首先,這項任務是製作各種大小的條形圖,然後每調整一次按鈕,就可以對其進行調整和排序。我在主類上實現了動作監聽器,然後做了一個輔助類來實現可比較的。我有一個調用可比較函數的問題。它說我的數組int []無法用可比較的方法解決,即尋找可比較的[]任何幫助或技巧將不勝感激。這裏是我的代碼:可比較的Java
import java.util.*;
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TwoSorts extends Applet implements ActionListener
{
private final int APPLET_WIDTH = 600;
private final int APPLET_HEIGHT = 600;
Button sort;
Label sort_label;
String pr_name;
int[] random = new int[20];
int[] sorter = new int[20];
public void init()
{
sort = new Button("Sort");
add(sort);
sort.addActionListener(this);
sort_label = new Label("Orange Selection/Black Bubble");
add(sort_label);
randomGen(random);
sorter = random;
setBackground (Color.white);
setSize (APPLET_WIDTH, APPLET_HEIGHT);
}
private void randomGen (int...random) {
for (int i = 0; i < 20; i++){
random [i] = (int) (20 +(Math.random()*300-20));
}
}
public void paint(Graphics g)
{
for (int i = 0; i < 20; i++){
g.setColor(Color.blue);
g.fillRect((int) (10 + (i*50)), 300, 50, ((random[i])));
g.setColor(Color.black);
g.fillRect((int) (10 + (i*50)), 300, 25, (sorter[i]));
}
g.drawRect (20, 30, 130, 50);
sort.setLocation(0,220);
sort_label.setLocation(0,270);
sort_label.setSize(400,30);
}
class action extends TwoSorts implements Comparable {
public void actionPerformed(ActionEvent arg0) {
selectionSort(random);
insertionSort (sort);
repaint;
public static void selectionSort (Comparable[] random) {
int min;
Comparable temp;
for (int index = 0; index < random.length-1; index++)
{
min = index;
for (int scan = index+1; scan < random.length; scan++)
if (random[scan].compareTo(random[min]) < 0)
min = scan;
temp = random[min];
random[min] = random[index];
random[index] = temp;
}
public static void insertionSort (Comparable[] sorter) {
for (int index = 1; index < sorter.length; index ++){
Comparable key = sorter[index];
int position = index;
while (position > 0 && key.compareTo(sorter[position-1]) < 0){
sorter [position] = sorter[position-1];
position--;
}
sorter[position] = key;
}
}
@Override
public int compareTo(Object o) {
// TODO Auto-generated method stub
return 0;
}
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
}
你看起來很糟糕。實現Comparable接口的類不應該是進行排序的類,我懷疑應該是一個GUI類。只有要排序的非GUI數據類應該實現Comparable。此外,你的compareTo方法應該返回一個有意義的整數,而不是0,這會使你的類完全不可比。 –
我只是非常困惑的整理排序的東西 – blankwall
你看了這個教程?如果你試圖在你走的時候補上它,那對你來說會非常沮喪。你知道Integer實現了'Comparable',如果你的數據是一個簡單的'ArrayList ',你可以調用'Collections.sort(...)',而不必擔心實現Comparable接口。 –