Помогите с кодом (C#)

Пару деньков назад начал изучать си шарп. Решил создать генератор паролей и впоследствии совершенствовать его для того, чтобы видеть резулетат и просто развлекаться. Сразу выдало ошибки типа «не удаётся неявно преобразовать стринг в инт», хотя я вроде как конвертировал число в строку. Помогите, пожалуйста с кодом! Буду признателен. Вот код:

using System;
using System.IO;
using System.Linq;
using System.Collections.Generic;

namespace CSharp_Shell
{

    public static class Program 
    {
        public static void Main() 
        {
            Random rand = new Random();
            Console.Write("Введите минимальное число символов: ");
            string min = Console.ReadLine();
            Console.Write("Введите максимальное число символов: ");
            string max = Console.ReadLine();
            Convert.ToInt32(min);
            Convert.ToInt32(max);
            Console.WriteLine("Введите любой символ для генерации");
            Console.ReadKey();
            Console.Clear();
            
            int randInt = rand.Next(min, max);
            int[] num = new int[randInt];
            int i1 = 0;
            do {
               num[i1] = rand.Next(9);
               i1++;
            } while (i1 <= randInt);
            int manystr = max -= randInt;
            string[] str = new string[manystr];
            int i2 = 0;
            do {
                str[i2] = rand.Next('a', 'z');
                i2++;
            } while (i2 <= manystr);
            string ints = String.Concat<int>(num);
            string strs = String.Concat<string>(str);
            string password = ints + strs;
            Console.Write(password);
        }
    }
}
👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Коментар порушує правила спільноти і видалений модераторами.

Коментар порушує правила спільноти і видалений модераторами.

Коментар порушує правила спільноти і видалений модераторами.

Ты никуда не сохраняешь результат преобразования строки в инт. Я бы посоветовал бы или создать отдельные переменные для инт или сделать так:

...
int min = Convert.ToInt32(Console.ReadLine());
...
int max = Convert.ToInt32(Console.ReadLine());
...

При таких экспериментах лучше использовать блоки try-catch-finaly. Также, возможно вам будет интересно попробовать анонимные типы (var). И более изящное решение с применением динамической типизации (ключевое слово dynamic). Желаю попробовать всё и придумать ещё варианты. С новым годом!

Вот и вредные советы подвезли

Чего это? Bad Droid написал, что хочет развлечься! Можно хорошо развлечься и понять как делать можно и нужно и как можно, но не нужно)

какие-то недоступные для моего понимания развлечения...

ToInt32 возвращает значение типа int, т.е. для вашего случая необходимо написать так:

int minInt = Convert.ToInt32(min);
int maxInt = Convert.ToInt32(max);

И дальше работать с переменными minInt и maxInt, например:

int randInt = rand.Next(minInt, maxInt);

min и max вы пытаетесь засунуть в string, а потом в rand.Next().
У рандома нет перегрузок которые принимают стринговые значения. Только числовые. Вы указываете диапазон, от и до.

Стоп. Немного не понял. Я же сконвертировал

Convert.ToInt32(min);
Convert.ToInt32(max);

, а потом засунул в рандом. Если есть время, не могли бы вы отредактировать код и скинуть мне?

А где Вы сохранили результат конвертации?

Это как? Т.к. я новичок я не совсем понимаю вас. Пойду поищу на эту тему в инете. Спасибо за отзыв!

Создайте новую переменную и ей присвойте результат конвертации. Вы написали только вызов конвертации,min так и остался строкой

min = Convert.ToInt32(min);
max = Convert.ToInt32(max);
Вы имели ввиду это? Если да, то мне не помогло ( Но спасибо за то, что потратили на меня время

ToInt32() получает стринг и возвращает инт, от того что вы вызвали конвертацию и никуда не сохранили результат ничего не произойдет. Объявите новые переменные и в них сохраните результат, а его уже передавайте в функцию.

Возможен такой вариант, чтобы выдавало ошибку при вводе стринговых значений.

try
{
int val = Convert.ToInt32(Console.ReadLine());
}
catch (Exception)
{
Console.WriteLine("wrong. only integers!");
}

я бы использовал api с random.org посколько стандартная функция rand возвращает отнють не случайные значения. А так же стоит подумать о методе TryParse или использовать try catch посколько валидация входных параметров отсутствует. Ну и последнее почему нету работы хотя бы с таблицей ASCII в оамках генерации символов. И да на вход стоит подавать относительное значения сложности пароля и исходя из него через стратегию к примеру генерировать пароль той или инной сложности. Относительно вопросов обращайтесь на почту [email protected]

Мне обе ваших ссылки почему-то дают только общую страницу поиска. (Хотя сам текст ссылки показал достаточно, чтобы понять, о чём она.)

Всё, понял — были запрещены скрипты.

Підписатись на коментарі