Member 13510990 Ответов: 3

Может кто-нибудь ответить, чего мне не хватает?


<pre>
       static void Main(string[] args)
        {
            Random newRandom = new Random();
            int slumpTal = newRandom.Next(1, 101);
            bool[] boolVektor = new bool[slumpTal];
            
            for (int i = 0; i < boolVektor.Length; i++)
            {
                int slump = newRandom.Next(0,2);
                if (slump == 0)
                    boolVektor = true;
                else
                    boolVektor = false; 
            }
            
            Console.Write("Skriv in sökOrd");
            string searchWord = Console.ReadLine();
            bool search = false;
            for (int i = 0; i < boolVektor.Length; i++)
            {
                if (boolVektor[i] == search)
                {
                    Console.WriteLine("Följande hittades" + boolVektor[i]);
                    search = true;
                }
                if (!search)
                {
                    Console.WriteLine("Din sökning misslyckades");
                }
            }


Что я уже пробовал:

Я хочу, что пользователь может искать значение true или false, так что пользователь может знать, сколько правда или ложь это сохраняется в boolVektor. Я должен использовать convert.Toboolean. Но я не знаю, как это сделать. В данный момент я получаю эту вещь "не могу имплицитно преобразовать тип bool в bool[]"

3 Ответов

Рейтинг:
1

Iqra Ali

Привет,
Я не понимаю точно, для какой цели вы хотите, чтобы ваш пользователь искал истину и ложь.
Но изменение следующих строк кода, где вы получаете ошибку, устранит вашу ошибку.

for (int i = 0; i < boolVektor.Length; i++)
               {
                   int slump = newRandom.Next(0, 2);
                   if (slump == 0)
                       boolVektor[i] = true;
                   else
                       boolVektor[i] = false;
               }


Поскольку вы новичок, я попытаюсь объяснить вам это.

Знаете ли вы, что такое массив?, я думаю, вы знаете, что именно поэтому вы использовали цикл for, потому что мы обычно используем циклы, когда работаем над коллекциями. Массив - это совокупность чего-то. Воспринимайте его как множественное число, а не как единственное. Вы присваивали одно значение всей коллекции, в вашем случае эта коллекция может иметь любую случайную длину от 1 до 101, так как вы ее определили.
int slumpTal = newRandom.Next(1, 101);

Теперь, когда вы пытались присвоить одно значение всему массиву сразу, это давало вам ошибку. Попробуйте присвоить значения одно за другим, индекс за индексом, как я вам показал.
Надеюсь, это поможет, если останется какая-то путаница, я открыт для дальнейших дискуссий.
Счастливого обучения!


Member 13510990

Спасибо. Я понял. Но проблема, с которой я сталкиваюсь прямо сейчас, заключается в том, что всякий раз, когда я ищу число, первое значение, которое я получаю, ложно. Не знаю почему. Вот как выглядит мой код на данный момент.

Afzaal Ahmad Zeeshan

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

Может быть, это из-за случайной генерации.

Рейтинг:
0

Dave Kreskowiak

Ваш объявленный boolVektor как массив булевых значений, а не одно булево значение.

В вашей петле у вас есть:

for (int i = 0; i < boolVektor.Length; i++)
{
    int slump = newRandom.Next(0,2);
    if (slump == 0)
        boolVektor = true;
    else
        boolVektor = false; 
}

М-м-м... вы не можете присвоить значение всему массиву. Вы должны использовать индекс для массива:
for (int i = 0; i < boolVektor.Length; i++)
{
    int slump = newRandom.Next(0,2);
    if (slump == 0)
        boolVektor[i] = true;
}

Вам также не нужно устанавливать значение false, так как это значение по умолчанию для логического значения.


Member 13510990

Как будто я новичок, я хотел бы, чтобы вы объяснили немного больше о том, что вы подразумеваете под "Вам также не нужно устанавливать значение false, так как это значение по умолчанию для логического значения."

Dave Kreskowiak

Когда вы объявляете переменную, она имеет значение по умолчанию. Для целых чисел это 0. Для логических значений "ложь", которая представляет собой 0.

Если значение уже равно 0, то установка его на 0 против ничего вам не даст, не так ли?

Рейтинг:
0

Member 13510990

<pre> Random newRandom = new Random();
            int slumpTal = newRandom.Next(1, 101);
            bool[] boolVektor = new bool[slumpTal];

            //var search = Convert.ToBoolean(Convert.ToInt32("0"));

            for (int i = 0; i < boolVektor.Length; i++)
            {
                int slump = newRandom.Next(0, 2);
                if (slump == 0)
                    boolVektor[i] = true;
                else
                    boolVektor[i] = false;
            }
            {

                Console.Write("Skriv in sökOrd: ");
                string searchWord = Console.ReadLine();
                bool search = false;
             
                for (int i = 0; i < boolVektor.Length; i++)
                {
                    if (boolVektor[i] == search)
                    {
                        Console.WriteLine("Följande hittades: " + boolVektor[i]);
                        search = true;
                    }
                    if (!search)
                    {
                        Console.WriteLine("Din sökning misslyckades");
                    }
                }
                Console.ReadLine();
            }
        }
    }