Случайный Int как параметр Java

Я делаю очень простое Java-приложение под названием "Удивительные животные". В нем участвуют люди и их домашние животные (кошки или собаки). В этом случае мы имеем дело с собаками. Как мне создать экземплярный метод для людей (называемый makeDogMakeNoise), который вызывает makeNoise для Dog и передает случайное целое число в качестве параметра? Метод makeNoise выводит случайные строки шума на консоль. Например, "Призрачный лай", "Призрачный голос", "Призрачный хныканье". Может ли кто-нибудь помочь в этом вопросе, поскольку я не могу найти какие-либо надежные ресурсы в Интернете? Заранее спасибо.

Amazing Pets.java

public class AmazingPets {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    System.out.println("Welcome to Pets and Humans! Created By Marc Beepath.\n____________________________\n");

    Dogs firstDog = new Dogs("Ghost");
    Humans firstName = new Humans("Alex");
    Dogs secondDog = new Dogs("Paperbag");
    Humans secondName = new Humans("Michael");
    Cats firstCat = new Cats("Tom");
    Cats secondCat = new Cats("Mr Furball");
    Humans thirdName = new Humans("Bryan");
    Humans fourthName = new Humans("Julie");
    System.out.printf("%s's dog's name is %s.\n", firstName.getHumanName(), firstDog.getDogName()); 
    System.out.printf("%s's dog's name is %s.\n", secondName.getHumanName(), secondDog.getDogName());
    System.out.printf("%s's cat's name is %s.\n", thirdName.getHumanName(), firstCat.getCatName());
    System.out.printf("%s's cat's name is %s.\n", fourthName.getHumanName(), secondCat.getCatName());

    System.out.printf("\n\nHow many Humans have been created? To get your answer type in the console 'population'. ");
    Scanner scan = new Scanner(System.in);
    String myLine = scan.nextLine();
    String pop = "population";
    if (myLine.equalsIgnoreCase(pop)) {
        System.out.printf("There are %s Humans.\n", Humans.populationCount());
    } else {
        System.out.printf("There was an error getting the Population.\n");
    }
}    

Humans.java

public class Humans {
    private String mHumanName;
    private static int humanCount = 0;
    public Humans(String humanName){
        mHumanName = humanName;
        humanCount++;
    }
    public String getHumanName(){
        return mHumanName;
    }

     public static int populationCount() {
        return humanCount;
    }
}

Dogs.java

public class Dogs {
    private final String mDogName;

    public Dogs(String dogName){
        mDogName = dogName;
    }
    public String getDogName(){
        return mDogName;
    }
}

3 ответа

Случайное int может быть получено с помощью java.lang.Math.random() или java.util.Random.

Вот как я мог бы получить случайное int между 0 и size (другое int), используя Math.random ():

    int randomInd = (int)((size+1)*Math.random()) //needs casting to int as a double is returned

А теперь с помощью java.util.Random:

    Random r = new Random();
    int randomInd = r.nextInt(size+1);

Вы должны понимать, что ваш дизайн может быть значительно улучшен на основе комментариев выше. Подумайте, как бы вы ответили на вопросы ниже:

  1. Может ли человек иметь более 1 питомца? Может ли человек иметь кошку и собаку?
  2. Должен ли класс Human содержать методы makeDogNoise () и makeCatNoise () или будет просто делать makePetNoise ()?
  3. Человек, Собака, Кошка лучше описывают объекты, чем множественное число, такое как Люди

Изменить: неправильно прочитал часть "случайное число" вашего вопроса.

Для того, чтобы Человек сказал одной из своих Собак "шуметь", он должен сначала иметь ссылку на Собаку.

Для этого вы можете определить метод makeDogMakeNoise внутри вашего класса Humans, чтобы он принимал параметр (то есть ссылку на Dog):

public void makeDogMakeNoise(Dogs dog){
    // Tell the specified Dog to make one of n random noises

    // Generate a random integer between 0 and 9
    int n = (int)(Math.random() * 10);

    // Now you can tell the dog to make a noise
    dog.makeNoise(n);
}

Вам нужно будет определить метод makeNoise внутри вашего класса Dogs:

public void makeNoise(int n){
    /*
     * Do what you need to for this Dog to "make a noise"
     */
}

Теперь вы можете сделать что-то вроде этого:

Humans johnSnow = new Humans("John Snow");
Dogs ghost = new Dogs("Ghost");

// Tell the dog to make a noise
johnSnow.makeDogMakeNoise(ghost);

Кроме того, подумайте об изменении названий классов, чтобы они не употреблялись во множественном числе (используйте Human, Dog, Cat)

Надеюсь, это поможет.

Попробуй это:

    Открытый класс Люди {
    приватная строка mHumanName;
    private static int humanCount = 0;
    public Humans(String humanName){
        mHumanName = humanName;
        humanCount++;
    }
    public String getHumanName(){
        вернуть mHumanName;
    }

     public static int popCount() {
        вернуть человеческий аккаунт;
    }

    public void makeDogMakeNoise(Dogs d){
        d.makeNoise(Math.random());
    }
    }

    открытый класс собак
    приватный финал String mDogName;
    private String[] strs= {"barks", "woofs", "whimpers"};

    публичные псы (String dogName){
        mDogName = dogName;
    }
    public String getDogName(){
        вернуть mDogName;
    }

    public void makeNoise(int n){
        System.out.println("Призрак"+strs[(int)(n*(strs.length-1))]);
    }
    }

    открытый класс AmazingPets {

    /**
     * @param args аргументы командной строки
     */
    public static void main(String[] args) {
        System.out.println("Добро пожаловать к животным и людям! Создано Марком Бипатом.\ N ____________________________\n");

        Dogs firstDog ​​= new Dogs("Призрак");
        Люди firstName = новые Люди ("Алекс");
        firstName.makeDogMakeNoise(firstDog);

        Dogs secondDog = new Dogs("Paperbag");
        Люди secondName = новые Люди ("Майкл");
        secondName.makeDogMakeNoise(secondDog);

        Cats firstCat = new Cats("Том");
        Cats secondCat = new Cats("Мистер Ферболл");
        Люди ThirdName = Новые Люди ("Брайан");
        Люди четвертое имя = новые люди ("Джули");
        System.out.printf ("имя собаки%s -%s.\ N", firstName.getHumanName (), firstDog.getDogName ()); 
        System.out.printf ("имя собаки%s -%s.\ N", secondName.getHumanName (), secondDog.getDogName ());
        System.out.printf ("имя кота%s -%s.\ N", thirdName.getHumanName (), firstCat.getCatName ());
        System.out.printf ("имя кошки%s -%s.\ N", четвертое имя.getHumanName (), secondCat.getCatName ());

        System.out.printf ("\ n \ n Сколько людей создано? Чтобы получить ответ, введите в консоли" популяция ".");
        Scanner scan = новый сканер (System.in);
        String myLine = scan.nextLine();
        String pop = "население";
        if (myLine.equalsIgnoreCase(pop)) {
            System.out.printf("Есть%s людей.\ N", Humans.populationCount());
        } еще {
            System.out.printf ("Произошла ошибка при получении Населения.\ N");
        }
    }    

Другие вопросы по тегам