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