Как убедиться, что Java находит вашу переменную в разных методах? - PullRequest
0 голосов
/ 12 октября 2011

Я пытаюсь написать класс Java, где метод main создает массив для хранения 30 целых чисел.После этого я вызываю метод LOAD () в методе main, задача которого состоит в том, чтобы заполнить массив 30 целыми числами от 1 300 до *. 1001 *

. Для этого я написал полный Java-класс.Тем не менее, компилятор продолжает сообщать мне об этой ошибке: cannot find the symbol для символа randomThirty, имени моей переменной массива.

Здесь мой код, но я не уверен, почему мой randomThirty не выбираетсяпо LOAD (), возможно, мне нужно явно передать параметры в паренях LOAD?

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 ]

1 голос
/ 12 октября 2011

Подсказка в вашем комментарии:

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

Итак, у вас есть массив, с которым вы хотите, чтобы метод работал ... вы должны передать его методу:

load(randomThirty);

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

Это хороший подход, когда метод не естественно в контексте, где он имеет доступ к состоянию. В этом случае это выглядит как соответствующий подход. В других ситуациях вы можете использовать статическую переменную или переменную экземпляра, в зависимости от контекста.

(Кстати, вы должны взглянуть на класс Random - и узнать о соглашениях об именах Java.)

1 голос
/ 12 октября 2011

вам нужно передать 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.

0 голосов
/ 12 октября 2011

вам нужно передать ваш массив как параметр, потому что он находится вне области действия метода загрузки.

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); 
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...