public class Generator {
public static void main(String[] args) {
String[] surnameList = {"Вишневский", "Сидоров", "Заперской", "Вафлистов", "Мичурин", "Иванов", "Алеексеев", "Петухов"};
String[] nameList = {"Александр", "Иван", "Алексей", "Максим", "Владимир", "Геннадий", "Петр", "Ярослав"};
String[] patronymicList = {"Анатольевич", "Александрович", "Владимирович", "Алексеевич", "Сергеевич", "Максимович", "Ярославович", "Иванович"};
// Вычисляем, сколько слов в каждом списке
int surnameLength = surnameList.length;
int nameLength = nameList.length;
int patronymicLength = patronymicList.length;
//Генерируем три случайных числа
int rand1 = (int) (Math.random() * surnameLength);
int rand2 = (int) (Math.random() * nameLength);
int rand3 = (int) (Math.random() * patronymicLength);
//Строим фразу
String phrase = surnameList[rand1] + " " + nameList[rand2] + " " + patronymicList[rand3];
//Выводим фразу
System.out.println("Ваш напарник это - " + phrase);
}
}
例如,我不明白它是如何工作Math.random()的,以及它产生和乘以什么surnameLength。在调试中,我看不到生成什么Math.random().
该示例的书说:
该方法random()返回一个介于 0 和 1 之间的随机数,因此我们必须将该数字乘以列表中的元素数(数组的长度)。但是如果我们的方法random()返回为写的0and 0 умножается на 8(длина каждого массива),那么在这种情况下,总数将始终为 0 索引(8*0=0).
工作
Math.random():它随机生成从 0 到 1 的数字,即
0, 0.1, 0.2, 0.3 ... 0.9.您遇到的问题是它
Math.random()返回double的值小于 1,并且在使用时(int) Math.random()会向下舍入,即 为 0。