你如何确保Java在各种方法中找到你的变量?

时间:2011-10-12 16:07:11

标签: java arrays for-loop

我正在尝试编写一个Java类,其中main方法创建一个数组来存储30个整数。之后,我在main方法中调用一个名为LOAD()的方法,其作用是使用1-300中的30个整数填充数组。

我已经编写了我认为完整的Java类来执行此操作,但编译器不断告诉我这个错误cannot find the symbol符号randomThirty,我的数组变量的名称。

到目前为止,这是我的代码,但我不确定为什么我的randomThirty没有被LOAD()接收,也许我需要在LOAD的parens中明确传递参数?

import java.util.*;

public class arrayNums
{

public static void main(String args[])
{
     //main method which creates an array to store 30 integers

    int[] randomThirty = new int[30]; //declare and set the array randomThirty to have 30 elements as int type

    System.out.println("Here are 30 random numbers: " + randomThirty);

LOAD(); // the job of this method is to populate this array with 30 integers in the range of 1 through 300.
}


public static void LOAD()
{
    // looping through to assign random values from 1 - 300
    for (int i = 0; i < randomThirty.length(); i++) {
        randomThirty[i] = (int)(Math.random() * 301); 
}

3 个答案:

答案 0 :(得分:1)

您需要将randomThirty传递给您的加载方法,或者将其作为类的静态变量(即将其移出方法)。

所以你可以做到

LOAD(randomThirty); // pass the reference in

并将方法定义更改为

public static void LOAD(int[] randomThirty) {...}

或者您可以在类

上设置randomThirty静态属性
public class arrayNums {
    // will be available anywhere in the class; you don't need to pass it around
    private static int [] RANDOM_THIRTY = new int[30]; // instantiate here
    ...

    public static void main(String args[]) { ... } // calls load
    ...
    public static void load(){...}
    ...
}

作为注释,java约定是类名称与ArrayNums类似,方法名称应该类似于loadloadNums

答案 1 :(得分:1)

线索在你的评论中:

LOAD(); // the job of this method is to populate this array

所以你有一个你希望该方法可以使用的数组......你应该将它传递给方法:

load(randomThirty);

// Method declaration change...
public static void load(int[] arrayToFill)

当方法在可以访问状态的上下文中自然时,这是一种很好的方法。在这种情况下,看起来像是适当的方法。对于其他情况,您可以使用静态或实例变量,具体取决于上下文。

(顺便说一下,你应该看看Random类 - 并了解Java命名约定。)

答案 2 :(得分:0)

你需要将数组作为参数传递,因为它超出了加载方法的范围。

LOAD(randomThirty);




public static void LOAD(int[] randomThirty)
    {
        // looping through to assign random values from 1 - 300
        for (int i = 0; i < randomThirty.length(); i++) {
            randomThirty[i] = (int)(Math.random() * 301); 
    }