带有for循环的C#问题

时间:2010-09-15 00:59:17

标签: c#

有人可以告诉我为什么这不起作用。当我进入循环时,它打印所有内容而不是一行,并获得用户输入。它打印输入整数帐号输入整数帐户余额输入帐户持有人姓氏

感谢大家的工作,但现在搜索不起作用

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



namespace ConsoleApplication1

{

class accounts

{

private int[] accountnum = new int[5]; //private accountnum array of five integer account numbers        

private int[] accountbal = new int[5];//private balance array of five balance amounts

private string[] accountname = new string[5];//private accntname array to hold five last names


        public void fillAccounts()
        {
            int bal;
            int accountnumber;
            string name;

            for (int x = 0; x < 5; ++x)
            {

                Console.Write("Enter the integer the account number");
                accountnumber = Console.Read();
                Console.Write("Enter the integer the account balance");
                bal = Console.Read();
                Console.Write("Enter the account holder lastname");
                name = Console.ReadLine();

                accountnum[x] = accountnumber;
                accountbal[x] = bal;
                accountname[x] = name;
            }




        }
        public void searchAccounts()
        {
            Console.WriteLine("Enter the account number");
            int acctnum = Console.Read();
            for (int x = 0; x < 6; ++x)
            {
                if (x < 5)
                {
                    if (accountnum[x] == acctnum)
                    {
                        Console.WriteLine("Account #{0} has a balance of {1} for customer {2}", acctnum, accountbal[x].ToString("C"), accountname[x]);
                        break;
                    }
                }
                else
                {
                    Console.WriteLine("You entered invalid account number");
                }
            }

        }
        public void averageAccounts()
        {
            int sum = 0;
            int avg;


            for (int x = 0; x < 5; ++x)
            {
                sum = accountbal[x] + sum;
            }
            avg = sum / 5;
            Console.WriteLine("The average dollar amount is {0}", avg.ToString("c"));
        }
    }
    class assignment3_alt
    {
        static void Main(string[] args)
        {
            accounts myclass = new accounts();
            string userin;


            myclass.fillAccounts();
            int i = 0;
            while (i != 1)
            {//use the following menu:            
                Console.WriteLine("*****************************************");
                Console.WriteLine("enter an a or A to search account numbers");
                Console.WriteLine("enter a b or B to average the accounts");
                Console.WriteLine("enter an x or X to exit program");
                Console.WriteLine("*****************************************");
                Console.Write("Enter option-->");
                userin = Console.ReadLine();
                if (userin == "a" || userin == "A")
                {
                    myclass.searchAccounts();
                }
                else if (userin == "b" || userin == "B")
                {
                    myclass.averageAccounts();
                }
                else if (userin == "x" || userin == "X")
                {
                    break;
                }
                else
                {
                    Console.WriteLine("You entered an invalid option");
                }
            }
        }
    }
}

3 个答案:

答案 0 :(得分:5)

Console.Read只能读取一个字符。您需要使用Console.ReadLine

Console.Write("Enter the integer the account number");
accountnumber = int.Parse(Console.ReadLine());
Console.Write("Enter the integer the account balance");
bal = int.Parse(Console.ReadLine());
Console.Write("Enter the account holder lastname");
name = Console.ReadLine();

您可能还想考虑使用int.TryParse代替int.Parse,以便更好地处理无效输入。

答案 1 :(得分:1)

对于您的新问题,这是同样的错误。只需替换:

int acctnum = Console.Read();

int acctnum = int.Parse(Console.ReadLine());

或(最好)

int acctnum;
if (!int.TryParse(Console.ReadLine(), out acctnum))
{
    Console.WriteLine("You need to enter a number");
    return;
}

如果用户没有输入有效的整数,第一个将失败,第二个将打印出一个很好的错误消息并返回循环。

答案 2 :(得分:0)

这不是答案,因为其他人已经提出了一些好的答案。这些只是关于代码的一些提示。

不要使用while (i != 1)进行循环,不要更改i的值并使用break终止循环,最好使用do-while循环,如下所示:< / p>

do
{
    // blah blah
} while(userin != "x" || userin != "X")

比没有使用变量更容易混淆。