有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何从构造函数访问数组

几周前我刚开始使用Java,今天我尝试编写一个程序,能够计算用户可以输入的数字的平均IQ。我写了两个类,IQ和IQTester(IQTester=Main)。现在我的问题是,每当我想在compute()方法中计算一些东西(例如数组的平均值)时,整个数组都是空的。有人知道如何将数组从构造函数“传递”到compute()方法吗

package IQProgramm;

public class IQ {
    private int values[] = new int[10];
    private double average;

    public IQ(String numbers) {
        this.values = values;
        String[] values = numbers.split(";");
        System.out.println("Calculate: ");
        System.out.println("You've input the following numbers: ");
        for (int i = 0; i < values.length; ++i) {
            System.out.print(values[i] + " ");
        }
        System.out.println("\n");
    }

    public void compute() {
        for (int i = 0; i < values.length; ++i) {
            System.out.println(values[i]);
        }
    }
}
package IQProgramm;

import java.util.Scanner;

public class IQTester {
    public static void main(String[] args) {
        Scanner readIQ = new Scanner(System.in);
        System.out.println("Please enter your numbers: ");
        String numbers = readIQ.nextLine();
        IQ iq = new IQ(numbers);
        iq.compute();
    }
}

共 (1) 个答案

  1. # 1 楼答案

    您有两个名为values的不同数组,这就是它不能正常工作的原因

    此处定义的第一个String[] values = numbers.split(";");仅在构造函数中可见。如果要设置IQ类其余部分(private int values[] = new int[10];)中可用的值,则需要使用

    this.values[i] = Integer.parseInt(values[i])
    

    this指类IQ的变量值

    最好不要有两个同名的值。例如,您可以将String[] values名称更改为valuesStr

    具有修复程序的构造函数:

    public IQ(String numbers) {
        String[] valuesStr = numbers.split(";");
        System.out.println("Calculate: ");
        System.out.println("You've input the following numbers: ");
        for (int i = 0; i < valuesStr.length; ++i) {
            this.values[i] = Integer.parseInt(valueStr[i])
            System.println(this.values[i]+" ");
        }
        System.out.println("\n");
    }