繁体   English   中英

如何将此代码改进为面向 object 的编程?

[英]How can I improve this code to object oriented programming?

我想将此代码改进为 Java 中的 OOP。 例如,如何从变量 avg 返回值,或者我可以将 ArrayList 放入方法参数中吗?

先感谢您

 class ArrayTester {
     private double sum;


     public void getAverageNotes() {


         List < Integer > theBigList = new ArrayList < Integer > ();
         Random theGenerator = new Random();
         for (int n = 0; n < 4; n++) {

             theBigList.add(theGenerator.nextInt(6) + 1);
         }

         if (theBigList.size() > 2) {
             int max = Collections.max(theBigList);
             int min = Collections.min(theBigList);

             theBigList.remove(Integer.valueOf(max));
             theBigList.remove(Integer.valueOf(min));

             System.out.println(theBigList);
             for (int n = 0; n < theBigList.size(); n++) {
                 System.out.println("New note " + n + " of the Informatics is: " + theBigList.get(n));
                 sum = sum + theBigList.get(n);
             }
             System.out.println("Collection size is: " + theBigList.size() + "\nExtreme values are: " + min + " and " + max);
             double avg = Math.round(sum) / (double) theBigList.size();
             System.out.println("Average: " + String.format("%.2f", avg));

         } else {
             System.out.println("to small");
         }

您可以通过在计算后返回平均值来返回平均值。 如果少于 2 个项目,它将返回 -1 作为结果。

 public double getAverageNotes() {


        List<Integer> theBigList = new ArrayList<Integer>();
        Random theGenerator = new Random();
        for (int n = 0; n < 4; n++) {

            theBigList.add(theGenerator.nextInt(6) + 1);
        }
        
        if (theBigList.size() > 2) {
            double avg = 0;
            int max = Collections.max(theBigList);
            int min = Collections.min(theBigList);

            theBigList.remove(Integer.valueOf(max));
            theBigList.remove(Integer.valueOf(min));

            System.out.println(theBigList);
            int sum = 0;
            for (int n = 0; n < theBigList.size(); n++) {
                System.out.println("New note " + n + " of the Informatics is: " + theBigList.get(n));
                sum = sum + theBigList.get(n);
            }
            
            System.out.println("Collection size is: " + theBigList.size() + "\nExtreme values are: " + min + " and " + max);
            avg = Math.round(sum) / (double) theBigList.size();
            System.out.println("Average: " + String.format("%.2f", avg));
            return avg;

        } else {
            System.out.println("to small");
            return -1;
        }


    }

或者,如果您想将 ArrayList 作为参数,您可以更改方法签名:

public double getAverageNotes(List<Integer> list){
       
        List<Integer> theBigList = list;

       ...

并定义要传入的数组列表:

 public static void main(String[] args) {
        List<Integer> list = new ArrayList<Integer>();
        Random theGenerator = new Random();
        for (int n = 0; n < 4; n++) {

             list.add(theGenerator.nextInt(6) + 1);
         }
        System.out.println(getAverageNotes(list));
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM