尝试编写一个方法来从数组中找到最大的对象

huangapple go评论139阅读模式
英文:

Trying to write a method to find the largest object from an array

问题

添加一个方法

  1. public static Measurable max(Measurable[] objects)

到Data类中,该方法返回具有最大度量值的对象。

这是我所拥有的代码。

  1. public interface Measurable {
  2. double getMeasure();
  3. }
  4. public class MeasurableTester {
  5. public static void main(String[] args) {
  6. Measurable[] accounts = new Measurable[3];
  7. accounts[0] = new BankAccount(0);
  8. accounts[1] = new BankAccount(10000);
  9. accounts[2] = new BankAccount(2000);
  10. double averageBalance = Data.average(accounts);
  11. System.out.println("平均余额:" + averageBalance);
  12. System.out.println("预期结果:4000");
  13. Measurable[] countries = new Measurable[3];
  14. countries[0] = new Country("Uruguay", 176220);
  15. countries[1] = new Country("Thailand", 513120);
  16. countries[2] = new Country("Belgium", 30510);
  17. double averageArea = Data.average(countries);
  18. System.out.println("平均面积:" + averageArea);
  19. System.out.println("预期结果:239950");
  20. }
  21. }
  1. public class Data {
  2. Object tempObj = new Object();
  3. public static double average(Measurable[] objects){
  4. double sum = 0;
  5. for (Measurable obj : objects){
  6. sum = sum + obj.getMeasure();
  7. }
  8. if (objects.length > 0) {
  9. return sum / objects.length;
  10. }else{
  11. return 0;
  12. }
  13. }
  14. // 我在这里尝试编写一个方法
  15. public static Measurable max(Measurable[] objects){
  16. double max = 0;
  17. for (Measurable obj : objects){
  18. if (obj.getMeasure() > max){
  19. max = obj.getMeasure();
  20. }
  21. }
  22. return max;
  23. }
  24. }

注意:我已经将代码中的HTML实体编码(例如">)替换为了正常的引号和符号。如果您在代码中使用这些修饰符,可以恢复它们。

英文:

Add a method
public static Measurable max(Measurable[] objects)
to the Data class that returns the object with the largest measure.

This is what I have for code.

  1. public interface Measurable
  2. {
  3. double getMeasure();
  4. }
  5. public class MeasurableTester {
  6. public static void main(String[] args) {
  7. Measurable[] accounts = new Measurable[3];
  8. accounts[0] = new BankAccount(0);
  9. accounts[1] = new BankAccount(10000);
  10. accounts[2] = new BankAccount(2000);
  11. double averageBalance = Data.average(accounts);
  12. System.out.println("Average balance: " + averageBalance);
  13. System.out.println("Expected: 4000");
  14. Measurable[] countries = new Measurable[3];
  15. countries[0] = new Country("Uruguay", 176220);
  16. countries[1] = new Country("Thailand", 513120);
  17. countries[2] = new Country("Belgium", 30510);
  18. double averageArea = Data.average(countries);
  19. System.out.println("Average area: " + averageArea);
  20. System.out.println("Expected: 239950");
  21. }
  22. }`

'''
and the part I am having problems with
'''

  1. public class Data {
  2. Object tempObj = new Object();
  3. public static double average(Measurable[] objects){
  4. double sum = 0;
  5. for (Measurable obj : objects){
  6. sum = sum + obj.getMeasure();
  7. }
  8. if (objects.length > 0) {
  9. return sum / objects.length;
  10. }else{
  11. return 0;
  12. }
  13. }

'''

//I am trying to come up with a method here

  1. public static Measurable max(Measurable[] objects){
  2. double max = 0;
  3. for (Measurable obj : objects){
  4. if (obj.getMeasure() > max){
  5. obj = max;
  6. }
  7. }
  8. return max;
  9. }
  10. }

答案1

得分: 2

max方法应该如下所示:

  1. public static Measurable max(Measurable[] objects) {
  2. Measurable max = null;
  3. for (Measurable obj : objects) {
  4. if (max == null || obj.getMeasure() > max.getMeasure()) {
  5. max = obj;
  6. }
  7. }
  8. return max;
  9. }

如果你使用的是Java 8,你可以这样写:

  1. public static Measurable max(Measurable[] objects) {
  2. return Arrays.stream(objects).max(Comparator.comparing(Measurable::getMeasure)).get();
  3. }

另外,使用以下代码片段时:

  1. for (Measurable obj : objects){

没有进行null检查会导致出现NullPointerException

---- 编辑 ------

使用max方法:

  1. Measurable max = Data.max(countries) // 得到包含最大测量值的对象
  2. System.out.println(max.getMeasure()) // 打印最大测量值
英文:

The max method should be like:

  1. public static Measurable max(Measurable[] objects) {
  2. Measurable max = null;
  3. for (Measurable obj : objects) {
  4. if (max == null || obj.getMeasure() > max.getMeasure()) {
  5. max = obj;
  6. }
  7. }
  8. return max;
  9. }

If you're using Java 8, you could do:

  1. public static Measurable max(Measurable[] objects) {
  2. return Arrays.stream(objects).max(Comparator.comparing(Measurable::getMeasure)).get();
  3. }

Also, using

  1. for (Measurable obj : objects){

without null check is a recipe for NullPointerException.

---- Edit ------<br>
Using the max method:

  1. Measurable max = Data.max(countries) // gives max measure containing object
  2. System.out.println(max.getMeasure()) // prints the max measure value

huangapple
  • 本文由 发表于 2020年8月30日 11:50:34
  • 转载请务必保留本文链接:https://go.coder-hub.com/63653773.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定