【问题标题】:I can't just add values to an array and then I want to print the values我不能只是将值添加到数组中,然后我想打印这些值
【发布时间】:2013-02-20 22:18:23
【问题描述】:

/*这是一个使用 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);
        }

【问题讨论】:

  • 第二个循环中 k 应该如何增加?
  • 我现在已经编辑了实际代码...在第一个循环中有问题

标签: c#


【解决方案1】:
k++

在 foreach 循环中会起作用。


我实际上只是写:
Console.WriteLine("Value at index: {0} = {1}", k++, s);

【讨论】:

  • 是的,没错...我忘记在此处粘贴时添加 k++...遇到同样的问题
  • 您遇到什么错误?您能否修复上面的代码以显示实际正在运行的内容?
  • 您的第一个循环继续运行,因为您的 Console.Read() 调用将大小设置为输入的 ascii 值而不是实际数字(因此 49 表示 '1',或 52 表示 '4'你的情况)。您需要改为使用Convert.ToUInt32(Colsole.ReadLine())
  • 更改为 [array[i] = Convert.ToUInt32(Colsole.ReadLine()).toString()] 后出现异常问题!...它说输入字符串的格式不正确
  • size = Convert.ToInt32(Console.ReadLine());现在它起作用了....谢谢分配....你是英雄:)
【解决方案2】:

两件事:

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

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

【讨论】:

  • 您的答案的第二部分不起作用,{0} 需要替换为(逗号后)的参数,这就是 k + " = " + s 的含义
  • 呵呵,毕竟 c# 和 c/++ 没有那么接近。学习 c# 已经有一段时间了。
  • 最好做 Console.WriteLine("Value at index: {0} = {1}", k++, s);我做了但有同样的问题
  • 也许你应该在写行之外使用k++?
  • ascii 表。你为什么不 ReadLine()?
【解决方案3】:

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

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

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

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

我使用k++ 在foreach 循环的每次迭代中增加k 的值。

foreach 循环简单地迭代 IEnumerable 对象(或者更具体地说,在本例中为 IEnumerable&lt;int&gt; 对象),IEnumerable 对象的功能是它简单地为您提供集合中的每个项目。它没有“索引”的概念,所以如果你想为每个项目关联一个索引,那么你需要自己处理。

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

【讨论】:

    【解决方案4】:

    我认为 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();
    

    【讨论】:

    • 什么意思?我将最后一个 Console.ReadLine() 放入只是为了保持控制台打开,以便您可以看到输出。如果你把它拿出来,它会做你想做的事吗?
    • 现在只在第一个循环中出现问题...它一直在运行
    • 它是否要求您输入 index : x 其中 x 大于您输入的数组大小?
    • 即你有没有把尺寸线改成:size = Convert.ToInt32(Console.ReadLine());
    • size = Convert.ToInt32(Console.ReadLine());现在它工作了,,,谢谢:)
    【解决方案5】:

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

    也许您应该改用Console.ReadLine()

    【讨论】:

    • 是的 ryt...但循环继续进行
    • 我的意思是第一个循环
    • @Amir 你在size = Console.Read(); 中还有Console.Read()。你认为size 给了你什么?它取决于从输入流中读取的第一个字符的代码点。您是否希望用户输入数字?至少你应该写出size,这样用户就可以看到他得到了什么尺寸。
    【解决方案6】:

    这可行(已测试):

            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();
    

    【讨论】:

      猜你喜欢
      • 2021-11-29
      • 2020-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-16
      • 2019-09-10
      • 1970-01-01
      • 2019-08-20
      相关资源
      最近更新 更多