我需要创建一个存储10个整数的数组,并允许用户3个选项来操作数据

时间:2014-10-01 18:22:53

标签: c# arrays

我这里有代码。前两个部分很好并且很好。没有问题。

using System;
namespace MyNameSpace
{
  class IntArrayDemo
  {
      static void Main()
      {
        //Declare variables
        double[] dblIntArray = {100, 200, 300, 400, 500, 600, 700, 800, 900, 1000};
        string[] strIntArray = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10"};
        double   dblSentVal  = 0;

        //Get user input
        Console.WriteLine("Enter 1 to view the list in numeric order. Enter 2 to view the list in reverse numeric order. Enter 3 to choose a specific position to view.");
        dblSentVal = (Convert.ToDouble(Console.ReadLine()));

        if (dblSentVal == 1)
        {
            foreach(double dblInt in dblIntArray)
                Console.WriteLine(dblInt);
            Console.ReadLine();
        }

        else if (dblSentVal == 2)
        {
            Array.Reverse(dblIntArray);
            foreach(double dblInt in dblIntArray)
                Console.WriteLine(dblInt);
            Console.ReadLine();
        }

        else if (dblSentVal == 3)
        {
            for (int k = 0; k < strIntArray.Length; ++k)
            {
                if (strIntArray[k] == Console.ReadLine())
                {
                    Console.WriteLine("Number {0} in the list is {1}", strIntArray[k], dblIntArray[k]);
                }
            }
        }   
        Console.ReadLine();
    }
}

我遇到的问题是第三个选项:

else if (dblSentVal == 3)
{
    for (int k = 0; k < strIntArray.Length; ++k)
    {
        if (strIntArray[k] == Console.ReadLine())
        {
            Console.WriteLine("Number {0} in the list is {1}", strIntArray[k], dblIntArray[k]);
        }
    }
}   
Console.ReadLine();

当执行并且选择了第三个选项时,程序将运行但是为了查看数组中的整数4,我必须在控制台中键入4次,4次,如下所示:

4 4 4 4 列表中的第4个是400

我不想要这个。它应该显示&#34;列表中的数字4是400&#34;仅输入4次后。请帮忙!

2 个答案:

答案 0 :(得分:4)

在for循环中第一次调用k时,

Console.ReadLine()等于0。 k仅在循环中第4次等于4。

如果您希望用户输入的值是for循环中读取的内容,请将Console.ReadLine拉出循环:

string str = Console.ReadLine();
for (int k = 0; k < strIntArray.Length; ++k)
{
    if (strIntArray[k] == str)
    {
        Console.WriteLine("Number {0} in the list is {1}", strIntArray[k], dblIntArray[k]);
    }
}

答案 1 :(得分:3)

比你想象的容易:

else if (dblSentVal == 3)
{
    int index = int.Parse(Console.ReadLine())
    Console.WriteLine("Number {0} in the list is {1}", index, dblIntArray[index]);
}   
Console.ReadLine();

它是一个数组,只是它的索引;不需要循环。

如果您的用户不使用基于0的数组,您可能希望将index-1用于第二项:)