两种类型的数组1是字符串,另一种是int,我想显示所有用户输入值,但它只打印最后一个输入而不是全部?

时间:2014-09-13 00:20:16

标签: c#

namespace Test2
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] Namen = new string[5];
            int[] Lefftijd = new int[5];
            int index=0;
            for(int i = 0; i<Namen.Length;i++)
            {
                Console.Write("Geef de naam : ");
                Namen[index] = Console.ReadLine();
            }

            for(int j = 0 ; j < Lefftijd.Length; j++)
            {
                Console.Write("Geef de leeftijd : ");
                Lefftijd[index] = Convert.ToInt32(Console.ReadLine());

            }
            Console.WriteLine("De namen zijn  " + Namen.Length + " en aantal leftijden zijn : " + Lefftijd.Length);
            Console.WriteLine();
            Console.WriteLine("De naam is : " + Namen[index] + " De leftijd is : " + Lefftijd[index]);
            Console.ReadLine();
        }
    }
}

2 个答案:

答案 0 :(得分:1)

我不知道你输入字符串的语言是什么,但我会试一试。

当您显示输出时,索引值是最后一个值,因此除了最后一个值之外,您永远不会显示任何内容。

将索引重置为0并重复输出值。

我会使用一个对象来获取数据但只有一个数组,或者列表会更好。 在下面重写以使用泛型。希望这有助于解释。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{

class Program
{
    static void Main(string[] args)
    {
        var data = new List<myData>();

        for (int i = 0; i < 5; i++)
        {
            Console.Write("Geef de naam : ");
            var naam = Console.ReadLine();

            Console.Write("Geef de leeftijd : ");
            var leeftijd = Convert.ToInt32(Console.ReadLine());

            data.Add(new myData(naam, leeftijd));
        }

        Console.WriteLine("De namen zijn  " + data.Count().ToString());
        Console.WriteLine();
        data.ForEach(delegate(myData d)
        {
            Console.WriteLine("De naam is : " + d.name + " De leftijd is : " + d.age);
            //or better way
            Console.WriteLine("De naam is : {0}\tDe leftijd is : {1}", d.name, d.age);
        });
        Console.ReadLine();
    }
}
public class myData
{
    public string name { get; set; }
    public int age { get; set; }

    public myData(string name, int age)
    {
        this.name = name;
        this.age = age;
    }
}
}

答案 1 :(得分:0)

您没有递增index变量。我增加了它。这不是真正做到这一点的最佳方式,但我并不完全明白你想要做什么。我希望这个修改可以帮助你看到差异。

namespace Test2
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] Namen = new string[5];
            int[] Lefftijd = new int[5];
            int index=0;
            for(int i = 0; i<Namen.Length;i++)
            {
                Console.Write("Geef de naam : ");
                Namen[index++] = Console.ReadLine();
            }

            index = 0;
            for(int j = 0 ; j < Lefftijd.Length; j++)
            {
                Console.Write("Geef de leeftijd : ");
                Lefftijd[index++] = Convert.ToInt32(Console.ReadLine());

            }
            Console.WriteLine("De namen zijn  " + Namen.Length + " en aantal leftijden zijn : " + Lefftijd.Length);
            Console.WriteLine();
            Console.WriteLine("De naam is : " + Namen[index] + " De leftijd is : " + Lefftijd[index]);
            Console.ReadLine();
        }
    }
}