0

我对使用 C# 非常陌生。我正在尝试保存输入到控制台然后“读取”到数组的数据(文本,例如人名)。

我要保存数据的数组的名称是:name2convert
收集数据的变量(要转换的名称)是:nameEntered

很感谢任何形式的帮助。我已经为此工作了几个小时并进行了几次搜索,但我没有找到任何我能理解的答案,因为我目前对 C# 的理解有限。我只是尝试学习这个几个星期 - 我非常非常绿色。任何帮助表示赞赏。

注意:字符串名称是我的测试数组,因此我可以看到我知道如何从数组中读回数据。

我想将数据保存到names2Convert数组中。

这是我的代码:

using System;

namespace a061___String_Manipulations___PigLatin
{
///loop - ask for number of names equal to number asked
///  read line, save to array, iterate one up until num equals value asked for

class Program
{
    //Arrays

    String[] names = { "test01", "test02", "test03", "test04", "test05" }; //Test loop

    String[] name2convert = new String[1];

    //Variables & Ints?
    string title = ">>>-- Welcome to the Highly Enlightening World of Igp-ay Atinl-ay --<<< \n";
    string totalIs = "You said you want to convert a total of";
    string listCommands = "Is that correct? If so type (Y)es, (R)enter or (Q)uit";// general commands used
    string addSuffix ="-ah!"; // Add to end of each name
    string nameEntered = "";//name to be converted

    int namesTotal = 0;//

    //Main Method
    public void Play()
    {
        Console.WriteLine(title); //announce program

        askTotal(); //ask number of names

        while (true)
        {
            Console.WriteLine(listCommands);//lists options
            String command = Console.ReadLine().ToLower();//reads user command

            if (command == "y") // if askTotal true save to array? how?
            { 
                askName();//collects name entered
                confirmName();//allows user to confirm spelling, etc.    

                //y save the array   nameEntered   name2convert
                //name2convert.Add(nameEntered);
                name2convert[0] = nameEntered;

                //confirm name 
                for (int i = 0; i < name2convert.Length; i++)
                {
                    Console.WriteLine("Name Aquired: " + name2convert[i]);
                }
            }
            else if (command == "r")
            {
                askName();//asks name
            } 
            else if (command == "q")
            {
                Console.WriteLine("Cheers!"); break; //end
            }
            else
            {
                Console.WriteLine("Sorry. Invalid Request");//try again
            }

            PrintList();//test array 
        }
    }

    //Helper Methods
    public void PrintList()//iterates through, prints names stored in array
    {
        Console.WriteLine("Print List");
        for (int i = 0; i < names.Length; i++)
        {
            Console.WriteLine((i + 1) + ". " + names[i] + addSuffix);
        }
    }

    //iterates through, prints names stored in array
    public void askName()
    {
        Console.WriteLine("Enter Name: ");//Confirming
        String nameEntered = Console.ReadLine().ToLower();// Capture name

        Console.WriteLine("Name Captured: " + nameEntered);//confirming name caught
    }

    //iterates through, prints names stored in array
    public void confirmName()
    {
        Console.WriteLine(listCommands);//Confirming
        String command = Console.ReadLine().ToLower();
    }

    //how many names to convert
    public void askTotal() 
    {
        Console.WriteLine("How many names would you like to convert?");//Ask for content
        namesTotal = int.Parse(Console.ReadLine());

        Console.WriteLine(totalIs + " " + namesTotal);//Confirming
    }

    //Call Application
    static void Main(string[] args)
    {
        Program StringManipulations = new Program();
        StringManipulations.Play(); //Call forth the Pig Latin...

        Console.Read();//
    }
}

}

4

2 回答 2

0

改变这个:

//y save the array   nameEntered   name2convert
name2convert.Add(nameEntered);

对此:

name2convert[0] = nameEntered;

编辑:

askName()功能变化中:

String nameEntered = Console.ReadLine().ToLower();// Capture name 

到:

nameEntered = Console.ReadLine().ToLower();// Capture name

您已经nameEntered将类型string声明为您的类的属性。

你为什么要使用stringthen String?它是一样的,就像(实际上是在 C# 中)string的别名一样 - 但要保持一致!StringSystem.String

因为您已经为该数组分配了内存(它是固定大小的 - 在您的情况下它是一个)。因此,要访问数组中的第一个(也是唯一一个)单元格,您应该使用name2convert[0]- 0 是任何数组的第一个索引,通常在 C#(和许多其他编程语言)中的任何其他结构/容器中。

另一种方法(正如您在示例中尝试的那样)是用户List<String>。有关数组和列表的更多信息,请参阅此处:

数组教程

列出教程和示例

于 2013-10-31T18:25:42.520 回答
0

如果您想保存用户输入的每个单词,请使用字符串列表,例如

 List<String> name2convert;

然后

name2convert.Add(nameEntered);

浏览列表

foreach (String word in name2convert) 
{
    Console.WriteLine(word);
}
于 2013-10-31T19:24:44.820 回答