Рандомный генератор фраз/ошибка: cannot find symbol

95
17 февраля 2022, 00:00

Проблема возникла со словами после знака присвоения.

public class RandomPhrase {
    public static void main(String[] args) {
      // создаём три списка слов
      String[] list1 = {"чебурек", "дятел", "унитаз", "Шуня", "мясник", "пчела", "китаец"};
      String[] list2 = {"рубит", "строит", "готовит", "учит", "носит"};
      String[] list3 = {"мясо", "жука", "мыло", "домашку", "человека"};
      // определяем кол-во слов в массиве
      int Lenght1 = list1.lenght;
      int Lenght2 = list2.lenght;
      int Lenght3 = list3.lenght;
      // генерируем рандомное число
      int rand1 = (int) (Math.random() * Lenght1);
      int rand2 = (int) (Math.random() * Lenght2);
      int rand3 = (int) (Math.random() * Lenght3);
      // строим фразу
      String phrase = list1[rand1] + " " + list2[rand2] + " " + list3[rand3];
      // выводим фразу
      System.out.println(phrase);
    }
}
Answer 1

Неправильное название свойства длины массива. У Вас lenght, а надо length

public class RandomPhrase {
    public static void main(String[] args) {
      // создаём три списка слов
      String[] list1 = {"чебурек", "дятел", "унитаз", "Шуня", "мясник", "пчела", "китаец"};
      String[] list2 = {"рубит", "строит", "готовит", "учит", "носит"};
      String[] list3 = {"мясо", "жука", "мыло", "домашку", "человека"};
      // определяем кол-во слов в массиве
      int Lenght1 = list1.length;
      int Lenght2 = list2.length;
      int Lenght3 = list3.length;
      // генерируем рандомное число
      int rand1 = (int) (Math.random() * Lenght1);
      int rand2 = (int) (Math.random() * Lenght2);
      int rand3 = (int) (Math.random() * Lenght3);
      // строим фразу
      String phrase = list1[rand1] + " " + list2[rand2] + " " + list3[rand3];
      // выводим фразу
      System.out.println(phrase);
    }
}
Answer 2

Я,разумеется, понимаю, что опечатка в lenght - корень зла, но, как по мне, это наименьшая из проблем данного кода. А наибольшая проблема - процедурный подход и очень плохая расширяемость. Предалагаю старое-доброе ООП и немного функционалки :

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class RandomPhrase {
    private final List<String[]> phraseList;
    public RandomPhrase(){
        this.phraseList = new ArrayList<>();
    }
    public RandomPhrase addPhrases(String...phrase){
        phraseList.add(phrase);
        return this;
    }
    public String createPhrase(){
        return phraseList.stream()
                .map(arr->arr[(int)(Math.random()*arr.length)])
                .collect(Collectors.joining(" "));
    }
}
public class Main {
    public static void main(String[] args) {
        RandomPhrase randomPhrase = new RandomPhrase()
                .addPhrases("чебурек", "дятел", "унитаз", "Шуня", "мясник", "пчела", "китаец")
                .addPhrases("рубит", "строит", "готовит", "учит", "носит");
        System.out.println(randomPhrase.createPhrase());
        System.out.println(randomPhrase.createPhrase());
        System.out.println("************************************************");
        randomPhrase.addPhrases("мясо", "жука", "мыло", "домашку", "человека");
        System.out.println(randomPhrase.createPhrase());
        System.out.println(randomPhrase.createPhrase());
    }
}

В методе main создаем экземпляр класса RandomPhrase и зразу же добавляем 2 массива слов. После чего дважды генерируем фразу (пока из 2 слов, потому сто добавили только 2 масиива). Добавляем еще один массив и генерируем 2 фразы снова, теперь получаем фразы из 3 слов.

READ ALSO
Программно изменить marginBottom кнопки android

Программно изменить marginBottom кнопки android

Программно создаю кнопки, но недавно понадобилось делать отступ вниз от каждой кнопкиЯ так понял надо задать layout_marginbottom

93
Где проблема в калькуляторе?

Где проблема в калькуляторе?

Где сдесь проблема? Если например надо "-"То надо два раза вписать

125
JDK и Android Studio/Kotlin (Linux Mint 19.3)

JDK и Android Studio/Kotlin (Linux Mint 19.3)

товарищиОбъясните, кто нибудь, какой JDK нужен сейчас, для разработки под Android? В интернетах у каждого свое мнение

104
Не работает аутентификация в Postman

Не работает аутентификация в Postman

Имеется метод, в котором есть аннотация аутентификации

106