大家好我刚刚开始学习Java,我想知道如何访问另一个方法在方法中声明的数组? 设计看起来像这样:
public class Arrays{
int arraysize = 2;
public void initializeArray(){
float array[] = new float[arraySize]; // Declare array
}
public void accessArray(){
// I want to access the array from this method.
}
}
答案 0 :(得分:3)
了解java中变量的范围。这是我在快速Google搜索中找到的链接。 http://www.java-made-easy.com/variable-scope.html
您可以在类级别声明数组,然后可以在所有方法中访问它。
public class Arrays {
int arraysize = 2;
private float[] array = null;
public void initializeArray() {
array = new float[arraySize]; // Declare array
}
public void accessArray() {
// access array here.
}
}
或者您可以在方法中传递变量。
public class Arrays {
int arraysize = 2;
public void initializeArray() {
float[] array = new float[arraySize]; // Declare array
accessArray(array);
}
public void accessArray(float[] array) {
// access array here.
}
}
鉴于信息量,我有问题,方法1似乎比2好。
答案 1 :(得分:1)
您需要移动声明以使其成为成员,否则一旦initializeArray
呼叫结束,它将超出范围。然后,您可以从这两种方法访问该数组。试试这个:
public class Arrays{
float[] array;
int arraysize = 2;
public void initializeArray(){
array = new float[arraySize]; // Declare array
}
public void accessArray(){
array[0] = 1.0f;
}
}
答案 2 :(得分:1)
这样就完成了
public class myClass{
int arraysize = 2;
float[] myArray; // Declare array
public myClass(){
myArray = new float[arraySize]; // initialize array
}
public float[] accessArray(){
return myArray;
}
}
不能在类方法中完成数组声明。 在方法内完成的变量声明将变量的范围限制为方法。 (即你不能在其他地方使用它。)
然后在构造函数中实例化该数组。 构造函数是在实例化类时运行的特殊函数。 构造函数用于实例化类的变量 构造函数与其类具有相同的名称,并且不能指定返回类型(因此没有public int或public void public public)
接下来,您需要更改accessArray方法的返回类型。返回类型的void表示该方法不会返回任何内容。将其更改为float [] 然后你的accessArray方法只需返回数组变量。
编辑: “返回myArray;” 代码行给出了对数组的引用,它引用了函数(不是数组的副本,实际的数组,快速的Java是它总是这样做,除非返回原始数据类型时返回副本)< / p>如果你想让accessArray()在数组中设置浮点数而不是返回数组,那么它应该像这样实现。
public void accessArray(int index, float value){
myArray[index] = value;
}
答案 3 :(得分:0)
有两种选择:
public class Arrays {
private int arraySize = 2;
private float array[];// Declare array
public void initializeArray() {
array = new float[arraySize];
}
public void accessArray() {
// I want to access the array from this method.
float first = array[0];
}
}
initializeArray
方法应该返回一个数组)public class Arrays {
public static void main(String[] args) {
int arraySize = 2;
float[] array = initializeArray(arraySize);
accessArray(array);
}
public static float[] initializeArray(int size) {
return new float[size];
}
public static void accessArray(float[] floats) {
// I want to access the array from this method.
float first = floats[0];
}
}