2013-03-08 3 views
0

파일을 읽고 매트릭스에 값을 입력하려고합니다. 입력 스팅이 올바른 형식이 아닌 오류가 발생했습니다. 또한 문제 해결 팁이 있습니다. "문자열을 DateTime으로 변환 할 때 각 변수를 DateTime 객체에 넣기 전에 날짜를 가져 오는 문자열을 구문 분석하십시오.이 코드는 아무데도 DateTime을 사용하지 않아 매우 이상합니다. 내가 바보 뭔가를 놓친 거지 확신 당신이 볼 필요가 코드의 일부를 잊어 버린 경우, 알려 주시기 바랍니다입력 형식이 올바르지 않습니다.

코드 (C#을) :.. 파일의

class Program 
{ 
    private static string line; 
    private static int[,] matrix; 
    private static int numOfCities; 
    private static int startCity; 
    private static int[] greedyPath; 
    private static int greedyRecursionCount; 
    private static int total; 
    private static int lowerBoundTotal; 
    private static string filename = "points.txt"; 

    static void Main(string[] args) 
    { 
     readTxtFile(); 

     getStartCity(); 

     greedyStart(); 

     totalTour(); 

     lowerBound(); 

     compareAll(); 

     Console.ReadKey(); 

    } 

    private static void readTxtFile() 
    { 
     numOfCities = 0; 
     TextReader tr = new StreamReader(filename); 
     numOfCities = int.Parse(tr.ReadLine().Trim()); 

     line = "1"; 
     int index = 0; 
     matrix = new int[numOfCities,numOfCities]; 

     for (int i = 0; i < numOfCities; i++) 
     { 

      line = tr.ReadLine(); 

      for (int j = 0; j < numOfCities; j++) 
      { 

       matrix[i, j] = int.Parse(line[index].ToString().Trim()); 
       index = index + 2; 

      }//end inner for loop 
      index = 0; 

     }//end outer for loop 

     tr.Close(); 
    } 
} 

내용 :

1000 //Number of points that are in the file 
16 11 //XY-Points that are separated by 3 spaces 
10 45 
29 47 

도움을 주시면 감사하겠습니다. 미리 감사드립니다.

+2

이 코드는 어디에서나 "DateTime"에 대한 참조를 가지지 않으므로 이러한 구문 분석을 수행하지 않으므로 오류의 원인이 아닙니다. 예외가 _ 생한 곳을 확인하십시오. – Oded

+0

아마도'int.Parse' 호출에서 오는 것입니다. – PhoenixReborn

+1

정확한 메시지는 무엇입니까? 어떤 라인이 실패합니까? 입력 파일은 어떻게 생겼습니까? (나는 그것이 실행 시간에 실패한다고 생각한다.) – ThatBlairGuy

답변

0
matrix[i, j] = int.Parse(line[index].ToString().Trim()); 

당신이 생각하는대로하지 않습니다. 첫 번째 문자를 문자로 변환 한 다음 문자열을 변형 한 다음 구문 분석합니다. 첫 번째 변환은 1이 될 것이고, ""을 변환하려고하면 실패 할 것입니다. 당신은 찾고있다 :

matrix[i, j] = int.Parse(line.substring(index,2).Trim()); 
index += 5; 

당신은 또한 당신의 매트릭스를 봐야한다. 당신은 numcities x 2가 필요할 때 정사각형 행렬을 만듭니다. 단지 x와 y 좌표 만가집니다. 내부 루프를

for (int j = 0; j < 2; j++) 

으로 변경하고 이에 따라 행을 조정하십시오.

+0

이제 시작 : "startIndex는 문자열의 길이보다 클 수 없습니다." – JLott

+0

문자열의 끝에서 실행 중입니다. 디버그에서 실행하고 프로그램을 단계별로 실행하십시오. 오류가 발생하면 어떤 색인이되는지보십시오. – gashach

+0

실제로 텍스트 파일에 1000 개의 도시가 있습니까? – gashach

관련 문제