Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将数组的元素从子类传递到主类_Java_Arrays - Fatal编程技术网

Java 如何将数组的元素从子类传递到主类

Java 如何将数组的元素从子类传递到主类,java,arrays,Java,Arrays,所以我对学习java非常陌生,我有一个子类,它包含主类和一个父类,父类负责所有的计算。我在如何将数组的元素从主类传递到父类方面遇到了问题 这是我的密码。请帮助我如何实例化数组 import java.util.Scanner; 公共类GreatestLeastAverageApp{ 公共GreateStleEastAverageApp(){ //TODO自动生成的构造函数存根 } 公共静态void main(字符串[]args){ GreatestLeastAverage number=新的Gr

所以我对学习java非常陌生,我有一个子类,它包含主类和一个父类,父类负责所有的计算。我在如何将数组的元素从主类传递到父类方面遇到了问题

这是我的密码。请帮助我如何实例化数组

import java.util.Scanner;
公共类GreatestLeastAverageApp{
公共GreateStleEastAverageApp(){
//TODO自动生成的构造函数存根
}
公共静态void main(字符串[]args){
GreatestLeastAverage number=新的GreatestLeastAverage();
int[]x={0};
int a=0,b=0;
x=新整数[a];
{

对于(inti=0;i使用列表。它们通常更灵活,如果正确使用ArrayList,它的性能几乎可以与数组一样

public class GreatestLeastAverage {
    // ... other private members
    private List<Integer> a = new ArrayList<Integer>();

    public List<Integer> getA() {
        return a;
    }
}
我确信您使用了静态成员,因为您不知道如何使其正常工作,但我只知道,通常不鼓励使用静态成员,除非它们是最终的(常量)。

您不应该通过设置静态字段(
public static int[]a;
)。相反,您应该将数据作为方法的参数传递给方法。您的程序应该如下所示:

import java.util.Scanner;

public class GreatestLeastAverageApp  {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        System.out.println("Enter the number of elements:");
        int numOfElems = input.nextInt();
        int[] numbers = new int[numOfElems];
        System.out.println("Enter a set of integers:");
        for (int i = 0; i < numOfElems; i++) {
            numbers[i] = input.nextInt();
        }

        System.out.println("Statistics:");
        System.out.println("  min: " + GreatestLeastAverage.findMin(numbers));
        System.out.println("  max: " + GreatestLeastAverage.findMax(numbers));
        System.out.println("  average: " + GreatestLeastAverage.findAverage(numbers));
    }
}


class GreatestLeastAverage {

    public static int findMin(int[] numbers) {
        int candidate = numbers[0];
        for (int num : numbers) {
            if (num < candidate) candidate = num;
        }
        return candidate;
    }

    public static int findMax(int[] numbers) {
        int candidate = numbers[0];
        for (int num : numbers) {
            if (num > candidate) candidate = num;
        }
        return candidate;
    }

    public static double findAverage(int[] numbers) {
        int sum = 0;
        for (int num : numbers) {
            sum += num;
        }
        return sum / (double) numbers.length;
    }

}
import java.util.Scanner;
公共类GreatestLeastAverageApp{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
System.out.println(“输入元素数:”);
int numOfElems=input.nextInt();
int[]数字=新的int[numOfElems];
System.out.println(“输入一组整数:”);
for(int i=0;i候选者)候选者=num;
}
返回候选人;
}
公共静态双findAverage(int[]数字){
整数和=0;
for(整数:数字){
sum+=num;
}
返回和/(双)个数。长度;
}
}
要使此代码更好,请执行以下操作:

  • 上面的最小值/最大值/平均值计算不是很好,例如,如果您将空数组传递给
    findAverage
    ,则
    数字。长度
    将为
    0
    ,您将除以
    0
    。您应该改进这些计算,请参阅:
  • 当您需要在运行时动态更改列表的大小时,请考虑使用
    ArrayList
    而不是array(请参阅)

java:sub-class是一个
扩展父类的类-您没有这样做,在该代码中没有父类正如Carlos所说,您没有子类,但您有一个内部类。只是为了帮助您了解java术语。旁注:在某些部分,您有类似
{for(i=0;我必须澄清:代码中没有子类,也没有内部类。同一级别上有两个类。
for(int a : gla.getA()) {
    // Do something with a
}
import java.util.Scanner;

public class GreatestLeastAverageApp  {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        System.out.println("Enter the number of elements:");
        int numOfElems = input.nextInt();
        int[] numbers = new int[numOfElems];
        System.out.println("Enter a set of integers:");
        for (int i = 0; i < numOfElems; i++) {
            numbers[i] = input.nextInt();
        }

        System.out.println("Statistics:");
        System.out.println("  min: " + GreatestLeastAverage.findMin(numbers));
        System.out.println("  max: " + GreatestLeastAverage.findMax(numbers));
        System.out.println("  average: " + GreatestLeastAverage.findAverage(numbers));
    }
}


class GreatestLeastAverage {

    public static int findMin(int[] numbers) {
        int candidate = numbers[0];
        for (int num : numbers) {
            if (num < candidate) candidate = num;
        }
        return candidate;
    }

    public static int findMax(int[] numbers) {
        int candidate = numbers[0];
        for (int num : numbers) {
            if (num > candidate) candidate = num;
        }
        return candidate;
    }

    public static double findAverage(int[] numbers) {
        int sum = 0;
        for (int num : numbers) {
            sum += num;
        }
        return sum / (double) numbers.length;
    }

}