我正在尝试编写一个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);
}
答案 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
类似,方法名称应该类似于load
或loadNums
。
答案 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);
}