Filein和fileout错误,我无法弄明白。请帮忙! [英] Filein and fileout error, I can't figure it out. Please help!

查看:215
本文介绍了Filein和fileout错误,我无法弄明白。请帮忙!的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以下是我的代码:

Here is my code:

using System;
using System.IO;
using System.Text.RegularExpressions;
using Util;

namespace Program_9
{
    class Program
    {
        const string INPUT_FILE_NAME = "C:\\Users\\Programing 1\\Soluation 1\\Program 9\\Retirement Numbers\\Input";
        const string OUTPUT_FILE_NAME = "C:\\Users\\Programing 1\\Soluation 1\\Program 9\\Retirement Numbers\\Output";

        static string lineIn;
        static StreamReader fileIn;
        static StreamWriter fileOut;
        static char WType, WElig;
        static uint id;
        static int WAge, WExp;
        static double numOfEmployees;
        static double AvgAge, AvgExp, AgeAvgTotal = 0.0, WAge1Total = 0.0, WAge2Total = 0.0, WAge3Total = 0.0, WAge4Total = 0.0, WAge5Total = 0.0;
        static double WAge6Total = 0.0, WAge7Total = 0.0, WAge8Total = 0.0, WAge9Total = 0.0, WAge10Total = 0.0, WAge11Total = 0.0, WAge12Total = 0.0;
        static double ExpAvgTotal = 0.0, WExp1Total = 0.0, WExp2Total = 0.0, WExp3Total = 0.0, WExp4Total = 0.0, WExp5Total = 0.0;
        static double WExp6Total = 0.0, WExp7Total = 0.0, WExp8Total = 0.0, WExp9Total = 0.0, WExp10Total = 0.0, WExp11Total = 0.0, WExp12Total = 0.0;

        static void Main()
        {
            OpenFiles();
            PrintReportHeadings();
            while ((lineIn=fileIn.ReadLine()) !=null)
            {
                ParseLineIn();
                PrintDetailLine();
                UpdateTotals();
            }
            CalcAvg();
            PrintAvg();
            CloseFiles();
            DspData();
        }

        static void OpenFiles()
        {
            if (File.Exists(INPUT_FILE_NAME))
            {
                fileIn = File.OpenText(INPUT_FILE_NAME);
                Console.WriteLine("{0} was opened", INPUT_FILE_NAME);
            }
            else
            {
                Console.WriteLine("Error: {0} does not exit\n", INPUT_FILE_NAME);
                ConIO.Exit();
            }
            if (File.Exists(OUTPUT_FILE_NAME))
            {
                fileOut = File.CreateText(OUTPUT_FILE_NAME);
                Console.WriteLine("{0} was created\n", OUTPUT_FILE_NAME);
            }
            else
            {
                Console.WriteLine("Error: {0} could not be created\n", OUTPUT_FILE_NAME);
                ConIO.Exit();
            }
        }

        static void PrintReportHeadings()
        {
            fileOut.WriteLine("Employee  Age  Experience  Eligibility");
            fileOut.WriteLine("{0,9},  {1,7},  {2,7}, {3}", id, WAge, WExp, WElig);
            fileOut.WriteLine();
            fileOut.WriteLine("Average {0,7:}, {1,7}", AvgAge, AvgExp);
        }
        static void ParseLineIn(unit id, char WType, double WAge, double WExp, double WElig)
        {
            string[] words = new string[4];

            lineIn = lineIn.Trim();
            while (Regex.IsMatch(lineIn, "[ ]{2}"))
                lineIn = lineIn.Replace("  ", " ");
            words = lineIn.Split(' ');
            id = UInt32.Parse(words[0]);
            WType = Double.Parse(words[1]);
            WAge = Double.Parse(words[2]);
            WExp = Double.Parse(words[3]);
        }

        static void PrintDetailLine()
        {
            fileOut.WriteLine("{0} {1,7:d} {2,7:d} {3,7:d} {4,7:d} {5,3}",
                id, WAge, WExp, WElig);
        }

        static void UpdateTotals()
        {
            numOfEmployees++;
            WAge1Total += WAge1;
            WAge2Total += WAge2;
            WAge3Total += WAge3;
            WAge4Total += WAge4;
            WAge5Total += WAge5;
            WAge6Total += WAge6;
            WAge7Total += WAge7;
            WAge8Total += WAge8;
            WAge9Total += WAge9;
            WAge10Total += WAge10;
            WAge11Total += WAge11;
            WAge12Total += WAge12;
            AgeAvgTotal += AvgAge;
            WExp1Total += WExp1;
            WExp2Total += WExp2;
            WExp3Total += WExp3;
            WExpTotal += WExp4;
            WExp5Total += WExp5;
            WExp6Total += WExp6;
            WExp7Total += WAExp7;
            WExp8Total += WExp8;
            WExp9Total += WExp9;
            WExp10Total += WExp10;
            WExp11Total += WExp11;
            WExp12Total += WExp12;
            ExpAvgTotal += AvgExp;
        }

        static void CalcAvg()
        {
            AvgAge = (WAge1 + WAge2 + WAge3 + WAge4 + WAge5 + WAge6 + WAge7 + WAge8 + WAge9 + WAge10 + WAge11 + WAge12) / numOfEmployees;
        }

        static void CalcAvg()
        {
            AvgAge = AgeAvgTotal / numOfEmployees;
            AvgExp = ExpAvgTotal / numOfEmployees;
        }

        static void PrintAvg()
        {
            fileOut.WriteLine(" ");
            fileOut.WriteLine("Avg {0,7:f} {1,7:f}", AvgAge, AvgExp);
        }

        static void CloseFiles()
        {
            fileIn.Close(); fileOut.Close();
        }

        static void DspData()
        {
            switch (WType)
            {
                case 'W':
                case 'w':
                    if (WAge >= 63 && WExp >= 25)
                        Console.WriteLine("{0} {1} {2} Employee can retire.", id, WAge, WExp);
                    else if (WAge >= 63 && WExp < 25)
                        Console.WriteLine("{0} {1} {2} Employee cannot retire due to lack of experience.", id, WAge, WExp);
                    else if (WAge < 63 && WExp >= 25)
                        Console.WriteLine("{0} {1} {2} Employee cannot retire due to being underage.", id, WAge, WExp);
                    else if (WAge < 63 && WExp < 25)
                        Console.WriteLine("{0} {1} {2} Employee cannot retire due to being underage and lack of experience.", id, WAge, WExp);
                    break;
                case 'S':
                case 's':
                    if (WAge >= 60 && WExp >= 24)
                        Console.WriteLine("{0} {1} {2} Employee can retire.", id, WAge, WExp);
                    else if (WAge >= 60 && WExp < 24)
                        Console.WriteLine("{0} {1} {2} Employee cannot retire due to lack of experience.", id, WAge, WExp);
                    else if (WAge < 60 && WExp >= 24)
                        Console.WriteLine("{0} {1} {2} Employee cannot retire due to being underage.", id, WAge, WExp);
                    else if (WAge < 60 && WExp < 24)
                        Console.WriteLine("{0} {1} {2} Employee cannot retire due to being underage and lack of experience.", id, WAge, WExp);
                    break;
                case 'M':
                case 'm':
                    if (WAge >= 55 && WExp >= 20)
                        Console.WriteLine("{0} {1} {2} Employee can retire.", id, WAge, WExp);
                    else if (WAge >= 55 && WExp < 20)
                        Console.WriteLine("{0} {1} {2} Employee cannot retire due to lack of experience.", id, WAge, WExp);
                    else if (WAge < 55 && WExp >= 20)
                        Console.WriteLine("{0} {1} {2} Employee cannot retire due to being underage.", id, WAge, WExp);
                    else if (WAge < 55 && WExp < 20)
                        Console.WriteLine("{0} {1} {2} Employee cannot retire due to being underage and lack of experience.", id, WAge, WExp);
                    break;
            }
        }
    }
}



这是我的罚款:

1235 W 45 20

2536 W 55 21

5894 W 60 30

4597 W 75 35

2597 S 35 10

5689 S 40 20

5489 W 55 39

5872 M 60 40

5569 M 55 25

5566 W 80 20

8865 M 59 35

5598 S 65 35



我尝试了什么:



除了我能想到的一切,我不知道如何解决这个问题。我是一个初学者,我的老师是一个坚持形成的人,所以我现在的程序看起来像我的所有格式,我无法改变它。我在Visual 2015中创建了它,因此缩进有点偏差。



Main()中的UpdateTotals()出现问题,静态void UpdateTotals( )很好。我无法弄清楚我做错了什么。它只是说没有给出的参数对应于'Program.UpdateTotals()'所需的形式参数'WAge1'。


Here is my fineIn:
1235 W 45 20
2536 W 55 21
5894 W 60 30
4597 W 75 35
2597 S 35 10
5689 S 40 20
5489 W 55 39
5872 M 60 40
5569 M 55 25
5566 W 80 20
8865 M 59 35
5598 S 65 35

What I have tried:

Besides everything I can think of, I'm not sure how to fix this. I am a beginner, and my teacher is a stickler for formation so all of my formatting that the program looks like now, I can't change it. I made it in Visual 2015 so the indenting is off a bit.

It is having a problem with the UpdateTotals() in Main(), the static void UpdateTotals() is fine. I can't figure out what I am doing wrong. It just says "There is no argument given that corresponds to the required formal parameter 'WAge1' of 'Program.UpdateTotals()'."

推荐答案

如果我粘贴你的代码进入一个新项目并尝试编译它,我得到的错误比你说的多得多:

If I paste your code into a new project and try to compile it, I get a lot more errors than you say:
Error	1	Type 'Program_9.Program' already defines a member called 'CalcAvg' with the same parameter types	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	143	21	GeneralTestingConsole
Error	2	The type or namespace name 'Util' could not be found (are you missing a using directive or an assembly reference?)	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	19	7	GeneralTestingConsole
Error	3	No overload for method 'ParseLineIn' takes 0 arguments	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	46	17	GeneralTestingConsole
Error	4	The call is ambiguous between the following methods or properties: 'Program_9.Program.CalcAvg()' and 'Program_9.Program.CalcAvg()'	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	50	13	GeneralTestingConsole
Error	5	The name 'ConIO' does not exist in the current context	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	66	17	GeneralTestingConsole
Error	6	The name 'ConIO' does not exist in the current context	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	76	17	GeneralTestingConsole
Error	7	The type or namespace name 'unit' could not be found (are you missing a using directive or an assembly reference?)	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	87	33	GeneralTestingConsole
Error	8	Cannot implicitly convert type 'double' to 'char'. An explicit conversion exists (are you missing a cast?)	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	96	21	GeneralTestingConsole
Error	9	The name 'WAge1' does not exist in the current context	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	110	27	GeneralTestingConsole
Error	10	The name 'WAge2' does not exist in the current context	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	111	27	GeneralTestingConsole
Error	11	The name 'WAge3' does not exist in the current context	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	112	27	GeneralTestingConsole
Error	12	The name 'WAge4' does not exist in the current context	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	113	27	GeneralTestingConsole
Error	13	The name 'WAge5' does not exist in the current context	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	114	27	GeneralTestingConsole
Error	14	The name 'WAge6' does not exist in the current context	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	115	27	GeneralTestingConsole
Error	15	The name 'WAge7' does not exist in the current context	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	116	27	GeneralTestingConsole
Error	16	The name 'WAge8' does not exist in the current context	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	117	27	GeneralTestingConsole
Error	17	The name 'WAge9' does not exist in the current context	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	118	27	GeneralTestingConsole
Error	18	The name 'WAge10' does not exist in the current context	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	119	28	GeneralTestingConsole
Error	19	The name 'WAge11' does not exist in the current context	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	120	28	GeneralTestingConsole
Error	20	The name 'WAge12' does not exist in the current context	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	121	28	GeneralTestingConsole
Error	21	The name 'WExp1' does not exist in the current context	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	123	27	GeneralTestingConsole
Error	22	The name 'WExp2' does not exist in the current context	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	124	27	GeneralTestingConsole
Error	23	The name 'WExp3' does not exist in the current context	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	125	27	GeneralTestingConsole
Error	24	The name 'WExpTotal' does not exist in the current context	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	126	13	GeneralTestingConsole
Error	25	The name 'WExp4' does not exist in the current context	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	126	26	GeneralTestingConsole
Error	26	The name 'WExp5' does not exist in the current context	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	127	27	GeneralTestingConsole
Error	27	The name 'WExp6' does not exist in the current context	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	128	27	GeneralTestingConsole
Error	28	The name 'WAExp7' does not exist in the current context	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	129	27	GeneralTestingConsole
Error	29	The name 'WExp8' does not exist in the current context	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	130	27	GeneralTestingConsole
Error	30	The name 'WExp9' does not exist in the current context	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	131	27	GeneralTestingConsole
Error	31	The name 'WExp10' does not exist in the current context	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	132	28	GeneralTestingConsole
Error	32	The name 'WExp11' does not exist in the current context	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	133	28	GeneralTestingConsole
Error	33	The name 'WExp12' does not exist in the current context	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	134	28	GeneralTestingConsole
Error	34	The name 'WAge1' does not exist in the current context	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	140	23	GeneralTestingConsole
Error	35	The name 'WAge2' does not exist in the current context	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	140	31	GeneralTestingConsole
Error	36	The name 'WAge3' does not exist in the current context	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	140	39	GeneralTestingConsole
Error	37	The name 'WAge4' does not exist in the current context	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	140	47	GeneralTestingConsole
Error	38	The name 'WAge5' does not exist in the current context	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	140	55	GeneralTestingConsole
Error	39	The name 'WAge6' does not exist in the current context	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	140	63	GeneralTestingConsole
Error	40	The name 'WAge7' does not exist in the current context	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	140	71	GeneralTestingConsole
Error	41	The name 'WAge8' does not exist in the current context	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	140	79	GeneralTestingConsole
Error	42	The name 'WAge9' does not exist in the current context	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	140	87	GeneralTestingConsole
Error	43	The name 'WAge10' does not exist in the current context	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	140	95	GeneralTestingConsole
Error	44	The name 'WAge11' does not exist in the current context	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	140	104	GeneralTestingConsole
Error	45	The name 'WAge12' does not exist in the current context	D:\Documents\AA Backed Up\My Projects\GeneralTesting\GeneralTestingConsole\Program.cs	140	113	GeneralTestingConsole



并且没有人提及UpdateTotals。

因此,代码与您尝试使用的代码完全不同,或者您在很长时间内没有编译并且正在查看旧的错误消息。



在该代码中,您有两种不同的方法,称为CalcAvg,它们具有相同的签名(即它们采用相同的参数 - 无)这意味着系统扫描不知道应该调用哪些参数。



重建你的项目(使用CTRL + SHIFT + B)你应该得到同样的错误。从列表顶部开始,尝试修复它们 - 删除一个CalcAvg方法,然后将参数传递给ParseLineIn,依此类推。


And none of them mentions UpdateTotals.
So either that code is nothing like the code you are trying to work with, or you haven't compiled in a long time and are looking at old error messages.

In that code, you have two different methods called CalcAvg which have identical signatures (i.e. they take the same parameters - none) which means the system scan't tell which it should call.

Rebuild your project (use CTRL+SHIFT+B) and you should get the same errors I do. Start from the top of the list, and try to fix them - remove one of the CalcAvg methods, then pass the parameters to ParseLineIn, and so forth.


Util是一个引用,老师提供,我不知道如何发送。

我修复了CalAvg

The Util is a reference that the teacher provided, I am not sure how to send that.
I fixed CalAvg to
static void CalcAvg()
        {
            AvgAgeTotal = (WAge1 + WAge2 + WAge3 + WAge4 + WAge5 + WAge6 + WAge7 + WAge8 + WAge9 + WAge10 + WAge11 + WAge12);
            AvgAge = AgeAvgTotal / numOfEmployees;
            AvgExp = ExpAvgTotal / numOfEmployees;
        }





我重建了程序,我将错误复制过来。



I rebuilt the program, I will copy the errors over.

Severity	Code	Description	Project	File	Line	Suppression State
Error	CS7036	There is no argument given that corresponds to the required formal parameter 'WAge1' of 'Program.UpdateTotals(int, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double)'	Program9.1	C:\Users\Programing 1\Soluation 1\Program 9\Program9.1\Program9.1\Program.cs	37	Active
Severity	Code	Description	Project	File	Line	Suppression State
Error	CS7036	There is no argument given that corresponds to the required formal parameter 'WAge1' of 'Program.CalcAvg(int, double, double, double, double, double, double, double, double, double, double, double)'	Program9.1	C:\Users\Programing 1\Soluation 1\Program 9\Program9.1\Program9.1\Program.cs	39	Active
Severity	Code	Description	Project	File	Line	Suppression State
Warning	CS0649	Field 'Program.WElig' is never assigned to, and will always have its default value	Program9.1	C:\Users\Programing 1\Soluation 1\Program 9\Program9.1\Program9.1\Program.cs	20	Active



I wish that I could post a screen shot...that would help.


I wish that I could post a screen shot...that would help.


这篇关于Filein和fileout错误,我无法弄明白。请帮忙!的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆