0

/*这是一个使用 c# 向数组添加值然后打印它们的简单代码。但是为了做到这一点,我遇到了一个错误。可能的错误是什么?*/

        int size = 0, k = 0;
        Console.WriteLine("Enter size of array: ");            
        size = Console.Read();
        string[] array = new string[size];  

        for (int i = 0; i < size; i++)
        {
            Console.WriteLine("Enter at index: {0}", i);
            array[i] = Console.ReadLine();                
        }

        foreach (string s in array)
        {
            Console.WriteLine("Value at index: {0}", k++ + " = " + s);
        }
4

6 回答 6

2
k++

在 foreach 循环中会起作用。


我实际上只是写:

Console.WriteLine("Value at index: {0} = {1}", k++, s);
于 2013-02-20T22:21:50.997 回答
0

两件事情:

1)字符串[]数组=新字符串[大小];可能无法编译,你可以得到一个负数

2) Console.WriteLine("索引处的值:{0}", k + " = " + s); -> 我认为应该是 Console.WriteLine("索引处的值:{0}" + k + " = " + s);

于 2013-02-20T22:22:38.237 回答
0

这有效(经过测试):

        int size = 0, k = 0;
        Console.WriteLine("Enter size of array: ");
        size = int.Parse(Console.ReadLine());
        string[] array = new string[size];

        for (int i = 0; i < size; i++)
        {
            Console.WriteLine("Enter at index: {0}", i);
            array[i] =  Console.ReadLine();
        }

        foreach (string s in array)
        {
            Console.WriteLine("Value at index: {0} = {1}", k++, s);
        }

        Console.Read();
于 2013-02-20T22:50:28.337 回答
0

我相信您可以通过更改 foreach 循环中的代码来实现您想要的,如下所示:

Console.WriteLine("Value at index {0}: {1}", k++, s);

(看起来乔在他的回答中也已经有了这个解决方案)。

{0}是格式字符串参数后 Console.WriteLine 方法的第一个参数值的占位符。 {1}是格式字符串参数后 Console.WriteLine 方法的第二个参数值的占位符。

k++用来增加kforeach 循环每次迭代的值。

foreach 循环简单地遍历一个IEnumerable对象(或者更具体地说,IEnumerable<int>在这种情况下是一个IEnumerable对象),并且对象的功能是它只是为您提供集合中的每个项目。它没有“索引”的概念,因此如果您想将索引与每个项目相关联,那么您需要自己处理。

请注意,对于某些集合,例如数组和列表,您将始终按照它们在这些结构中存在的顺序获取项目。但是,IEnumerableIEnumerable<T>接口本身并不一定保证您将以任何特定顺序获取项目,或者如果您第二次循环它们,您将以相同的顺序获取项目。迭代的顺序由底层实现决定,int[]在这种情况下是一个整数数组 ( )。

于 2013-02-20T22:31:21.257 回答
0

我认为 Console.Read() 会给你带来问题,请尝试 ReadLine() 并在必要时转换为 Int,并增加 k:

 int size = 0, k = 0;
 Console.WriteLine("Enter size of array: ");
 size = Convert.ToInt32(Console.ReadLine());
 string[] array = new string[size];

 for (int i = 0; i < size; i++)
 {
     Console.WriteLine("Enter at index: {0}", i);
     array[i] = Console.ReadLine();
 }

 foreach (string s in array)
 {
     Console.WriteLine("Value at index: {0}", k + " = " + s);
     k++;
 }

 Console.ReadLine();
于 2013-02-20T22:32:56.520 回答
0

你为什么用Console.Read()?它读取与输入流中的每个字符相对应的整数,但直到您按下回车键(它本身将发送两个整数,一13和一10)。

也许你应该Console.ReadLine()改用?

于 2013-02-20T22:35:13.290 回答