0

何らかの理由でこれはコンパイルされますが、最後にエラーが発生し、理由がわかりません。コードの最初の部分は、正しく機能するテキスト ファイルからテーブルを表示することですが、2 番目の部分はそうではありません。

Console.WriteLine ビットにも到達しないと思います。これは、到達したかどうかを確認する方法でした。誰でも理由がわかりますか?

あなたが与えることができるどんな助けにも感謝します!

class Program
{
    static void Main(string[] args)

    {
        List<float> inputList = new List<float>();
        TextReader tr = new StreamReader("c:/users/tom/documents/visual studio 2010/Projects/DistanceCalculator3/DistanceCalculator3/TextFile1.txt");
        String input = Convert.ToString(tr.ReadToEnd());
        String[] items = input.Split(',');
        Console.WriteLine("Point         Latitude        Longtitude       Elevation");

        for (int i = 0; i < items.Length; i++)
        {
            if (i % 3 == 0)
            {
                Console.Write((i / 3) + "\t\t");
            }

            Console.Write(items[i]);
            Console.Write("\t\t");

            if (((i - 2) % 3) == 0)
            {
                Console.WriteLine();
            }

        }

        Console.WriteLine();
        Console.WriteLine();

        // Ask for two bits of data which are then stored in Longtitude, Latitude and Elevation 

        Console.WriteLine("Please enter the two points that you wish to know the distance between:");
        string point = Console.ReadLine();
        string[] pointInput = point.Split(' ');

        int pointNumber = Convert.ToInt16  (pointInput[0]);
        int pointNumber2 = Convert.ToInt16 (pointInput[1]);

        int Latitude = (Convert.ToInt16(items[pointNumber*3]));
        int Longtitude = (Convert.ToInt16(items[(pointNumber*3)+1]));
        int Elevation = (Convert.ToInt16(items[(pointNumber*3)+2]));

        int Latitude2 = (Convert.ToInt16(items[pointNumber2 * 3]));
        int Longtitude2 = (Convert.ToInt16(items[(pointNumber2 * 3) + 1]));
        int Elevation2 = (Convert.ToInt16(items[(pointNumber2 * 3) + 2]));

        Console.WriteLine("Latitude");
        Console.WriteLine("Latitude2");
4

2 に答える 2

1

に変換できない10進値を使用していますInt16。したがって、を使用しますfloat

また、「Latitude」を出力すると、変数の値ではなく、変数の名前が書き込まれます。コードを変更しました:

float Latitude = (float.Parse(items[pointNumber*3]));
float Longtitude = (float.Parse(items[(pointNumber*3)+1]));
float Elevation = (float.Parse(items[(pointNumber*3)+2]));

float Latitude2 = (float.Parse(items[pointNumber2 * 3]));
float Longtitude2 = (float.Parse(items[(pointNumber2 * 3) + 1]));
float Elevation2 = (float.Parse(items[(pointNumber2 * 3) + 2]));

Console.WriteLine(Latitude);
Console.WriteLine(Latitude2);
于 2012-10-24T17:18:22.367 に答える
1

入力文字列は整数ではなく浮動小数点値です。次のように解析してフロートにすることができます。

float Latitude = (Convert.ToSingle(items[pointNumber * 3]));
float Longtitude = (Convert.ToSingle(items[(pointNumber * 3) + 1]));
float Elevation = (Convert.ToSingle(items[(pointNumber * 3) + 2]));

float Latitude2 = (Convert.ToSingle(items[pointNumber2 * 3]));
float Longtitude2 = (Convert.ToSingle(items[(pointNumber2 * 3) + 1]));
float Elevation2 = (Convert.ToSingle(items[(pointNumber2 * 3) + 2]));
于 2012-10-24T17:18:41.323 に答える