Я изучаю java и нахожусь на очень начальном уровне. Мой вопрос: создайте 3 случайных числа и поместите их в массив. Ни один индекс в этом массиве не должен содержать 6 и 4. Затем покажите вывод массива с помощью цикла foreach. Я пытаюсь с прошлой ночи, но не могу найти решение. Пожалуйста, помогите мне решить эту проблему. Это мой код ниже:
Разместите свой код, некоторые люди не могут видеть ваше изображение, которое прикреплено, у них ограниченный доступ в Интернет
Проблема в вашем коде в основном связана с ошибкой компиляции: вы не повторяете тип, когда передаете переменную в качестве параметра метода, просто отбрасываете int[] в подчеркнутом коде. Тогда у вас будет как минимум одна ошибка компиляции (в основном, потому что вы не объявили переменную). Но в любом случае рекурсия - не лучший способ решить эту проблему.




Ошибки компиляции связаны с передачей int[] value вашему методу firstThreeDigit(). Удаление int[] value решит проблемы компиляции, но в этом случае ваш код может запускаться несколько раз для решения одной проблемы снова и снова.
Возможно, это то, чего вы хотите достичь. Попробуйте выполнить рефакторинг вашего кода следующим образом.
public static void main(String[] args){
firstThreeDigit();
}
public static void firstThreeDigit(){
Random rand = new Random();
int[] firstArray = new int[3];
int count = 0;
while(count < 3) {
int randomNumber = rand.nextInt(10);
if (randomNumber != 4 && randomNumber != 6) {
firstArray[count] = randomNumber;
count++;
}
}
for(int i : firstArray){
System.out.println(i);
}
}
Спасибо, Фейсал Мехмуд, сэр.
@Muhammad Если это решило вашу проблему. Это хорошо. Добро пожаловать, братан!
Попробуйте удалить все вхождения 'int [] value' в исходный код. И сделайте свой метод firstThreeDigit статическим.
И пока вы занимаетесь этим, спросите себя, была ли вообще какая-то причина, по которой вы поместили их туда. Их там быть не должно.
Кроме того, вы не вызываете метод так же, как вы его объявляете. Объявление из строки 8 в порядке. Но когда вы вызываете метод, не включайте тип
неправильный:
firstThreeDigit(int[] value);
верный:
int[] value = new int[]{1,2,3};
firstThreeDigit(value);
В любом случае их вообще не должно быть в этом коде.
это ответ? что это такое ?
@BasilBattikhi Да, это ответ, но я полагаю, что это не имеет особого смысла, если вы не видите его снимок экрана с кодом.
Вот образец, который может дать вам результат, который вы ищете:
int[] nums = new int[3];
for(int x = 0; x < nums.length; x++) {
int num = (int) (Math.random() * 10 + 1);
if (num == 6 | num == 4) {
x--;
continue;
}
else
nums[x] = num;
System.out.println(Arrays.toString(nums));
}
Что мы можем сделать здесь, так это создать новое случайное число каждый раз в цикле. Если число равно 6 или 4, мы активируем оператор continue, чтобы начать цикл заново, а также вычтем -1 из x, чтобы цикл не запускался снова. Если сгенерированное случайное число не равно 6 или 4, мы сохраним это число в массиве с индексом, который соответствует итерации, на которой мы находимся. Каждый раз в цикле мы можем распечатать обновленный массив. Если вы хотите сначала создать случайные числа:
int x = 0;
int y = 0;
int z = 0;
int count = 0;
boolean isRunnin = true;
while(isRunnin) {
int num = (int) (Math.random() * 10 + 1);
if (num == 6 | num == 4) {
continue;
}
else {
if (count == 0) {
x = num;
}
else if (count == 1) {
y = num;
}
else if (count == 2) {
z = num;
}
}
count++;
if (count > 2) {
isRunnin = false;
}
}
System.out.println(x);
System.out.println(y);
System.out.println(z);
Это сгенерирует три случайных числа, а затем вы можете поместить эти числа в массив в цикле for.
ниже должно работать
public static void main(String[] args)
{
firstThreeDigits() ;
}
public static void firstThreeDigits()
{
Random randomNumber= new Random();
int[] firstArray= new int[3];
for (int i = 0,j=0; ;j++) //i for array index and j for running loop until we get 3 numbers which are not 4 or 6
{
int number=randomNumber.nextInt(10);
if (!(number==4||number==6)) //if random number is NOT 4 or 6
{
firstArray[i]=number; // add to array
i++;
if (i==3) // print three number from array and break the loop
{
for(int num:firstArray)
{
System.out.println(num);
}
break;
}
}
}
}
Это хорошо и все такое, но вы забыли задать вопрос. Код также должен быть размещен в виде текста в самом вопросе. Не как ссылку на изображение.