java - 显示数组排序的变量名称?

标签 java arrays sorting console

** 这是我在 StackOverflow 上的第一篇文章,我只在高中时编写过代码,所以我绝不是专业人士。其实我还是个新手XD。还需要注意的是,我使用 ReadyToProgramInJava 作为我的 IDE,因此我使用 HSA 控制台来编写我的程序。无论如何,继续我的问题。

我正在编写一个程序,要求我对 int 数组进行排序,然后显示该数组中的最高值。我使用 array.sort 按升序排列变量,然后打印出数组的最高值。像这样的事情:

public class stackOverflowQuestion


Console c;
public stackOverflowQuestion ()
{
    c = new Console ();
}


public void Sorting ()
{
int obi = 10;
int luke = 4;
int vader =21;
int palpatine = 5;
    int [ ] people = {obi, luke, vader, palpatine};
  Arrays.sort(people);    
  c.println (people [people.length - 1]);
}


public static void main (String[] args)
{
    stackOverflowQuestion s = new stackOverflowQuestion ();
    s.Sorting ();
}

问题是这样的:当我打印数组的最高值时,它只显示数字。因此,如果我按原样运行该程序,它将输出“21”。理想情况下,我希望它打印具有最高值的变量的名称。所以,在运行这个程序时,我希望它打印“Vader”。有办法做到这一点吗?

如果这看起来像是一个可怕的幼稚问题,我很抱歉,但我对编程还比较陌生。

谢谢, 海登

最佳答案

  • Java 没有提供按照您需要的方式访问变量名称的标准方法...
  • 在创建数组时,信息会丢失...它是按值传递,而不是按引用传递,因此您将包含值 10、4、21 和 5 的数组传递给 Java

因此您需要某种方式链接值和名称...

  • 您可以遵循各种枚举,并在其他问题中切换技巧,但我相信这些没有捕获重点
  • 我建议采用一种更加面向对象的方法,使用一个名为 Person 的类,将名称和值一起存储...
  • Arrays.sort() 不知道如何对 Person 对象进行排序,因此它要么需要 Person 实现 java.lang.Comparable ,或传递可选的 java.util.Comparator ,我已经提供了后者的示例。

代码

public class StackOverflowQuestion {
    private class Person {
        private String name;
        private int value;
        public String getName() {
            return name;
        }
        public int getValue() {
            return value;
        }
        public Person(String name, int value) {
            super();
            this.name = name;
            this.value = value;
        }
    }

    private class Sorting {
        public Sorting() {
            Person[] people = { new Person("obi", 10), 
                                new Person("luke", 4),
                                new Person("vader", 21), 
                                new Person("palpatine", 5) };

            Arrays.sort(people, new Comparator<Person>() {
                @Override
                public int compare(Person o1, Person o2) {
                    return o1.getValue() - o2.getValue();
                }
            });
            System.out.println(people[people.length - 1].getName());
        }
    }
    public static void main(String[] args) throws IOException {
        new StackOverflowQuestion().new Sorting();
    }
}

关于java - 显示数组排序的变量名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34303834/

相关文章:

java - 网络爬虫,反馈?

java - 提供的正则表达式匹配什么?

javascript - 如何使用 for 循环来控制台记录数组的每个项目?

objective-c - 获取数组的大小

JavaScript forEach : mutate elements

c++ - 根据一个 vector 对多个 vector 进行排序

algorithm - 节省内存的归并排序

java - 如何解析这样的文本?

java - 使用递归的二分搜索仅采用参数中的搜索值

java - 用 Java 对 2 个大文本文件进行排序的最佳方法是什么?