Видя, что это домашняя работа, я чувствую, что нужно дать объяснение происходящему.
У вас есть три набора чисел, которые вам нужно сгенерировать.
К первому номеру предъявляются самые высокие требования. Он должен быть больше 100, но не содержать 8 или 9.
Вы гарантируете, что он всегда будет больше 100, используя:
(rand.nextInt(7)+1) * 100.
Здесь написано, сгенерируйте случайное число от 0 до 6. Добавьте 1 к этому числу, чтобы убедиться, что оно никогда не будет 0. Так что, если оно выбирает 0, добавляется +1, делая его 1. Если оно выбирает 6, +1 добавляется 7, и т. д. Это удовлетворяет правилу № 1 и правилу № 2.
Вы гарантируете, что первое число никогда не будет иметь 8 или 9.
(rand.nextInt(8) * 10) + rand.nextInt(8)
Генерация случайного числа от 0 до 7. * 10 гарантирует, что он будет в десятой позиции, в то время как последняя помещает число в последнюю позицию.
Вместо того, чтобы пытаться исправить другой ответ, поскольку он также неправильно использует DecimalFormat.
package stackoverflow_4574713;
import java.text.DecimalFormat;
import java.util.Random;
public class Main {
public static void main(String[] args) {
Random rand = new Random();
int num1 = (rand.nextInt(7) + 1) * 100 + (rand.nextInt(8) * 10) + rand.nextInt(8);
int num2 = rand.nextInt(743);
int num3 = rand.nextInt(10000);
DecimalFormat df3 = new DecimalFormat("000"); // 3 zeros
DecimalFormat df4 = new DecimalFormat("0000"); // 4 zeros
String phoneNumber = df3.format(num1) + "-" + df3.format(num2) + "-" + df4.format(num3);
System.out.println(phoneNumber);
}
}
Выход:
662-492-1168