Пытаюсь понять, как использовать поля в методе

Я новичок в Java, и мне трудно понять некоторые основные понятия. Например, здесь я пытаюсь написать программу, которая будет генерировать случайные строки, используя класс «Random» в Java: http://docs.oracle.com/javase/6/docs/api/java/util/Random.html

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

package øv2;

import java.util.Random;

public class RandomStringGenerator {


    private int randomNumber;

    private void setRandomNumber(int randomNumber){
        randomNumber = this.randomNumber;
    }

    private int getRandomNumber(){
        return randomNumber;
    }

    private String generateRandomString(int randomNumber){
        int randomString = randomNumber.nextInt();
    }



}

Что я действительно хочу сделать, так это взять поле «randomNumber» и просто превратить его в случайное число, используя класс Java «Random», точнее, метод «nextInt()», а затем превратить его в строку. Но я не очень понимаю, как использовать поле «randomNumber» где угодно, нужны ли мне для него геттеры и сеттеры? Могу ли я просто использовать «randomNumber» в качестве аргумента в любом методе?

Извините, если это сбивает с толку, большое спасибо за ваше время!


person Nora    schedule 24.03.2014    source источник
comment
Вам понадобятся геттеры и/или сеттеры, если вы хотите иметь доступ и/или изменять свою переменную из любого места, которое не находится внутри кода вашего класса. Если вы собираетесь использовать переменную только внутри своего класса, они вам не нужны.   -  person Tim    schedule 24.03.2014
comment
Большое спасибо, Тим Кастелинс!   -  person Nora    schedule 24.03.2014


Ответы (3)


Вы объявили поле, но оно не случайного типа. Это тип int. Чтобы иметь возможность вызывать метод nextInt(), вам нужен объект типа Random, потому что это класс, в котором объявлен nextInt().

Вам также нужно что-то вернуть (сгенерированную строку) из метода.

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

public class RandomStringGenerator {

    private Random randomNumberGenerator = new Random();

    public String generateRandomString() {
        int randomNumber = randomNumberGenerator.nextInt();
        String randomString = Integer.toString(randomNumber);
        return randomString;
    }
}

Теперь, когда вам нужно сгенерировать случайную строку, вы можете просто сделать

RandomStringGenerator rsg = new RandomStringGenerator();
String s = rsg.generateRandomString();
person JB Nizet    schedule 24.03.2014
comment
Я забыл удалить его, когда скопировал код ОП. Исправлено сейчас. - person JB Nizet; 24.03.2014
comment
@user3257736 user3257736 Пожалуйста, примите ответ, если он помог вам решить вашу проблему! :) - person Alexis Leclerc; 24.03.2014
comment
@AlexisLeclerc Большое спасибо! Что я в основном стараюсь делать, так это учиться у него :) - person Nora; 24.03.2014

Я не уверен, чего именно вы хотите добиться, но это может помочь, я добавил комментарий в конце каждой строки:

public static void main(String[] args) {
    String randomString; //define new String variable
    randomString = generateRandomString(); //call method and store returned values into randomString variable
    System.out.println(randomString); //printing randomString
}


private static String generateRandomString() {
    Random r = new Random(); //You have to create new instance of class Random and name it as you want. I gave it a name "r"
    int randomInt = r.nextInt(); //here you generate random number
    String randomString = String.valueOf(randomInt); //You generated Integer, but you want String, this transform Integer into String
    return randomString; //Now you have random String you can return
}
person libik    schedule 24.03.2014
comment
Большое спасибо, это помогает! - person Nora; 24.03.2014

Вы нигде не использовали java.util.Random API в коде. Вам нужно создать экземпляр Random для генерации псевдослучайной последовательности целых чисел, которую вы можете преобразовать в литералы String. Пожалуйста, проверьте приведенный ниже код

   Random random = new Random();
   String randomIntegerString = random.nextInt() + "";

Ваш код будет

private int randomNumber;

//add a Random variable and instantiate
Random random = new Random();

/**
 *  Method returns a String representation of pseudo random
 *  number generated based on <code> randomNumber </code>
 */
private String generateRandomString(int randomNumber){
    return random.nextInt(randomNumber) + "";
}
person Keerthivasan    schedule 24.03.2014
comment
Благодарю вас! Я тупо не знал, что нужно было создать экземпляр Random. - person Nora; 24.03.2014