1

ドキュメントフォルダのtest.txtファイルを使用してこのプログラムをテストしようとしています。パスを正しく取得するのに問題があります。誰かが私にいくつかのアイデアを与えることができますか?それは宿題で、私はほとんどそれで終わりです!

using System;
using System.IO;

class Program


{
    // declare constants to use in wind chill factor equation - no magic numbers
    const double EQUATION_NUMBER_ONE = 35.74;
    const double EQUATION_NUMBER_TWO = 0.6215;
    const double EQUATION_NUMBER_THREE = 35.75;
    const double EQUATION_NUMBER_FOUR = 0.4275;
    const double EQUATION_EXPONENT = 0.16;
    const int DEGREE_SYMBOL = 176;

    static void Main()
    {       

        // declare some variables for the main method
        string fileName = "";
        string line = "";
        double t = 0.0;
        double v = 0.0;
        double wchillf = 0.0;
        char degreeSymbol = (char)DEGREE_SYMBOL;


        string environment = System.Environment.GetFolderPath
       (System.Environment.SpecialFolder.Personal) + "c:\\";


        // Give student Info and ask user for a file name.
        // we will read this file and use the info for our input.
        Console.WriteLine("Wind Chill Calculator Braught to you by Teancum");
        Console.WriteLine("for CS 1400 01X");
        Console.WriteLine("11/11/2012");
        Console.WriteLine("Project 8");
        Console.Write("Please enter the file name in your My Documents folder: ");
        fileName = Console.ReadLine();


        string path = environment + fileName;
        //we will create a new instance of the StreamReader class
        //as well find the file in the documents folder
        //this will read the Info and orginise it.
        StreamReader windChillinfo = new StreamReader(path);


        // start the do loop to keep readding the file untill there is no more information
        do
        {
            // read in a line and save it as a string variable
            line = windChillinfo.ReadLine();

            //this if is to make sure there is no invalid info for example if the file is empty.
            if (line != null)
            {
                string[] values = line.Split();
                t = double.Parse(values[0]);
                v = double.Parse(values[1]);

                //here we call the windchillmagic Method
                wchillf = WindChillMagic(t, v);

                //here will be the Results of the windchillmagic method 
                Console.WriteLine("\nFor a temperature {0:f2} F{1}", t, degreeSymbol);
                Console.WriteLine("\nand a wind speed of {0:f2}mph", v);
                Console.WriteLine("\nThe wind chill factor would be = {0:f2}{1}\n", wchillf, degreeSymbol);
            }
        } while (line != null);

        windChillinfo.Close();

        Console.WriteLine("\nThank you for and keep Warm! Press enter to EXIT");

        Console.ReadLine();
    }//End Main()


    static double WindChillMagic(double t, double v)
    {
        double wci = 0.0;
        wci = EQUATION_NUMBER_ONE + (EQUATION_NUMBER_TWO * t) - (EQUATION_NUMBER_THREE * (Math.Pow(v, EQUATION_EXPONENT))) + (EQUATION_NUMBER_FOUR * t * (Math.Pow(v, EQUATION_EXPONENT)));
        return wci;
    }
}//End class Program
4

2 に答える 2

3

次の行に沿って何かをしてみませんか。

String path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "filename.txt");

using (StreamWriter sw = new StreamWriter(path, false))
{
    sw.WriteLine("Hello, file.");
}

これでうまくいきました。ドキュメント フォルダに「filename.txt」というファイルがあり、テキストは「Hello, file」です。中身。


これを行っているため、バージョンは機能しません。

string environment = System.Environment.GetFolderPath
   (System.Environment.SpecialFolder.Personal) + "c:\\";

つまり、個人用フォルダが「C:\Users\Username\Documents」の場合、environment文字列には「C:\Users\Username\Documentsc:\」という値が含まれるようになり、それをパスに結合した後、

fileName = Console.ReadLine();
string path = environment + fileName;

「test.txt」と入力すると、 にpathが含まれるようになりますC:\Users\Username\Documentsc:\test.txt。この種のエラーを見つけるには、デバッガを使用する必要があります。

于 2012-11-12T06:10:59.113 に答える
1

これは後ろ向きです:

System.Environment.GetFolderPath
       (System.Environment.SpecialFolder.Personal) + "c:\\";

GetFolderPathが「SomeFolder\SomeOtherFolder」を返す場合、作成したのは「SomeFolder \ SomeOtherFolderc:」です。

ここにブレークポイントを設定し、行をステップパスしてから変数の上にマウスを置くと、environmentこの問題が発生します。

1)後方です。
2)代わりにPath.Combineを使用する必要があります。

string path = environment + fileName;

代わりにPath.Combineを使用して、間にスラッシュを追加する必要があります。environmentスラッシュで終わらない場合はどうなりますか?次に、「C:\ SomeFolder\SomeOtherFoldersomeUsersFilename」を取得します

于 2012-11-12T06:13:05.000 に答える