Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#控制台应用程序如何输入多行输入,而不仅仅是读取行中的第一行?_C#_Console Application - Fatal编程技术网

c#控制台应用程序如何输入多行输入,而不仅仅是读取行中的第一行?

c#控制台应用程序如何输入多行输入,而不仅仅是读取行中的第一行?,c#,console-application,C#,Console Application,我正在用c#创建一个程序,它将读取多行,然后一次读取一行,并输出一些信息。代码如下: static void Main(string[] args) { string info1Stuff = Console.ReadLine(); string[] theInfo1 = info1Stuff.Split(','); string info2Stuff = C

我正在用c#创建一个程序,它将读取多行,然后一次读取一行,并输出一些信息。代码如下:

static void Main(string[] args)
        {            
            string info1Stuff = Console.ReadLine();
            string[] theInfo1 = info1Stuff.Split(',');            

            string info2Stuff = Console.ReadLine();
            string[] theInfo2 = info1Stuff.Split(',');
            string info3Stuff = Console.ReadLine();
            string[] theInfo3 = info1Stuff.Split(',');
            string info4Stuff = Console.ReadLine();
            string[] theInfo4 = info1Stuff.Split(',');
            string info5Stuff = Console.ReadLine();
            string[] theInfo5 = info1Stuff.Split(',');

            NavigationInfo info1 = new NavigationInfo(theInfo1[0], theInfo1[1], theInfo1[2], theInfo1[3], Convert.ToDouble(theInfo1[4]));

            info1.calculateDistance();
            info1.calculateTime();
            info1.calculateCost();

            NavigationInfo info2 = new NavigationInfo(theInfo2[0], theInfo2[1], theInfo2[2], theInfo2[3], Convert.ToDouble(theInfo2[4]));

            info2.calculateDistance();
            info2.calculateTime();
            info2.calculateCost();

            NavigationInfo info3 = new NavigationInfo(theInfo3[0], theInfo3[1], theInfo3[2], theInfo3[3], Convert.ToDouble(theInfo3[4]));

            info3.calculateDistance();
            info3.calculateTime();
            info3.calculateCost();

            NavigationInfo info4 = new NavigationInfo(theInfo4[0], theInfo4[1], theInfo4[2], theInfo4[3], Convert.ToDouble(theInfo4[4]));

            info4.calculateDistance();
            info4.calculateTime();
            info4.calculateCost();

            NavigationInfo info5 = new NavigationInfo(theInfo5[0], theInfo5[1], theInfo5[2], theInfo5[3], Convert.ToDouble(theInfo5[4]));

            info5.calculateDistance();
            info5.calculateTime();
            info5.calculateCost();

            Console.WriteLine(info1.ToString());
            Console.WriteLine(info2.ToString());
            Console.WriteLine(info3.ToString());
            Console.WriteLine(info4.ToString());
            Console.WriteLine(info5.ToString());
但当我输入所有数据时,它会显示输出为输入的第一行5次,而不是5次不同的输出行。所以它基本上忘记了第2-5行,只使用输入和输出的第一行5次

请让我知道

谢谢
Rohan

这应该可以完成以下工作:

string info1Stuff = Console.ReadLine();

string[] theInfo1 = info1Stuff.Split(',');            


string info2Stuff = Console.ReadLine();

string[] theInfo2 = info2Stuff.Split(',');

string info3Stuff = Console.ReadLine();

string[] theInfo3 = info3Stuff.Split(',');

string info4Stuff = Console.ReadLine();

string[] theInfo4 = info4Stuff.Split(',');

string info5Stuff = Console.ReadLine();

string[] theInfo5 = info5Stuff.Split(',');
更改此项:

        string[] theInfo1 = info1Stuff.Split(',');            

        string info2Stuff = Console.ReadLine();
        string[] theInfo2 = info1Stuff.Split(',');
        string info3Stuff = Console.ReadLine();
        string[] theInfo3 = info1Stuff.Split(',');
        string info4Stuff = Console.ReadLine();
        string[] theInfo4 = info1Stuff.Split(',');
        string info5Stuff = Console.ReadLine();
        string[] theInfo5 = info1Stuff.Split(',');
为此:

        string[] theInfo1 = info1Stuff.Split(',');            

        string info2Stuff = Console.ReadLine();
        string[] theInfo2 = info2Stuff.Split(',');
        string info3Stuff = Console.ReadLine();
        string[] theInfo3 = info3Stuff.Split(',');
        string info4Stuff = Console.ReadLine();
        string[] theInfo4 = info4Stuff.Split(',');
        string info5Stuff = Console.ReadLine();
        string[] theInfo5 = info5Stuff.Split(',');

这是一个简单的复制/粘贴错误。

单独处理五个不同的信息位似乎会让事情变得麻烦。为
info
使用数组。这使您能够使用循环

const N = 5;  // Number of input lines.

var info = new NavigationInfo[N];  // Here an array is handier as individual variables.

for (int i = 0; i < N; i++) {
     // You don't need any index here; you can reuse the same variable.
    string input = Console.ReadLine();

    // Same here. You can reuse this array.
    string[] parts = input.Split(',');

    var navInfo = new NavigationInfo(parts[0], parts[1], parts[2], parts[3],
                                     Convert.ToDouble(parts[4]));
    navInfo.calculateDistance();
    navInfo.calculateTime();
    navInfo.calculateCost();

    info[i] = navInfo;
}
for (int i = 0; i < N; i++) {
    Console.WriteLine(info[i]);  // Console.WriteLine calls ToString automatically.
}
const N=5;//输入行数。
var info=新导航信息[N];//在这里,数组作为单个变量更方便。
对于(int i=0;i

许多软件开发原则中有一条被命名为D,这是基于我们自己的RepeatY。单独处理五个输入行会将几乎相同的代码重复5次。这需要大量的打字,给你5倍的出错机会。此外,如果您以后需要修改代码,您需要修改5次。

仔细查看您的
Split
calls的目标。OMG非常感谢您。我花了这么多时间在这个项目上,我不想因为这样一个简单的错误而放弃。谢谢。我在这方面工作了一段时间,所以可能我工作的时间太长了。嗨@ChefBrohan,是的,工作太多会带来这些事情;)即使没有足够的发言权,也要考虑我的回答;祝你好运休息一下;)