我有一个家庭作业,并且有一点麻烦。首先,这项任务是制作各种大小的条形图,然后每调整一次按钮,就可以对其进行调整和排序。我在主类上实现了动作监听器,然后做了一个辅助类来实现可比较的。我有一个调用可比较函数的问题。它说我的数组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接口。 –