Member 12881221 Ответов: 2

В C# не удается конвертировать из 'строка' до систем.Ио; помочь?


Цель кода состоит в том, чтобы ввести новые данные пользователей и записать их в этот файл пользователей. Но имя файла должно быть создано в имени пользователя.

У меня были данные, записываемые в файл, работающий совершенно нормально, но когда я попытался заставить имя генерироваться из переменной, это не сработало. Я получаю такие ошибки, как:
Аргумент 1: не удается конвертировать из 'строка' до 'системы.ИО.FUNCOCO2 трансляция'

Ошибка CS0165 использование неназначенной локальной переменной 'sName' FUNCOCO2

Аргумент CS1503 Ошибка 2: не удается конвертировать из 'строка' до 'системы.Текст.Кодирование'


Как вы, наверное, уже поняли, я очень новичок в программировании.

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

case 2: //enter new user
                        //Enter new user information and add them to file
                    Console.Write("Please Enter the number of users you wish to log: ");
                    iUserNumber = Convert.ToInt32(Console.ReadLine());

                    //open file for writing, in APPEND mode
                    using (StreamWriter sw = new StreamWriter("NewUser" +sName,".txt", true))
                    {

                        //loop for each user
                        for (iCount = 1; iCount <= iUserNumber; iCount++)
                        {
                            // enter details
                            Console.Write("Please Enter your Name" + iCount + ": ");
                            sName = Console.ReadLine();

                            Console.Write("Please Enter the Name of your School: ");
                            sSchoolName = Console.ReadLine();
                            Console.WriteLine();

                            Console.Write("Please Enter the Name of your Class: ");
                            sClassName = Console.ReadLine();

                            // write to file
                            sw.WriteLine(sName);
                            Console.WriteLine();
                            sw.WriteLine(sSchoolName);
                            Console.WriteLine();
                            sw.WriteLine(sClassName);


                            Console.WriteLine("User data entered: ");

                        }

                    }

cvogt61457

Какие строки имеют ошибки?
Какие существуют виды sName, sSchoolName, и sClassName? (Я предполагаю, что строка)

2 Ответов

Рейтинг:
12

OriginalGriff

Наверное, это такая линия:

using (StreamWriter sw = new StreamWriter("NewUser" +sName,".txt", true))
(Но двойной щелчок по сообщению об ошибке приведет вас к нужной строке просто для уверенности)
И, вероятно, это делает запятая.
Изменить:
new StreamWriter("NewUser" +sName,".txt", true))
К:
new StreamWriter("NewUser" +sName+".txt", true))
или лучше:
string path = string.Format("NewUser{0}.txt", sname);
using (StreamWriter sw = new StreamWriter(path, true))

И с тобой все будет в порядке.
Однако было бы неплохо использовать папку, отличную от стандартной: она работает в разработке, но, как правило, терпит неудачу в производстве, потому что папка приложения защищена от записи. Лучше привыкнуть к использованию определенной папки данных, которая всегда читается / записывается.


Рейтинг:
1

#realJSOP

Когда вы создаете объект StreamWriter, вы еще не знаете имени пользователя, потому что еще не запросили его. Я хотел сделать это таким образом:

case 2: //enter new user
{
    //Enter new user information and add them to file
    Console.Write("Please Enter the number of users you wish to log: ");
    iUserNumber = Convert.ToInt32(Console.ReadLine());

    for (int i = 1; i < iUserCount; i++)
    {
        // enter details
        Console.Write("Please Enter your Name: ");
        sName = Console.ReadLine();
        Console.WriteLine();

        Console.Write("Please Enter the Name of your School: ");
        sSchoolName = Console.ReadLine();
        Console.WriteLine();

        Console.Write("Please Enter the Name of your Class: ");
        sClassName = Console.ReadLine();

        // write to file (using a method)
        CreateUserFile(sName, sSchool, sClass);
    }
}
break;

и метод будет выглядеть так:
private void CreateUserFile(string studentName, string schoolName, string className)
{
    using (StreamWriter writer = new StreamWriter(string.Concat("NewUser_", studentName, ".txt"), true))
    {
        writer.WriteLine(name);
        writer.WriteLine(school);
        writer.WriteLine(className);
    }
}

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