2016-11-03 3 views
1

지금 당분간이 문제를 해결해 왔으며 프로그램을 디버깅 할 수 없습니다. 2 차원 배열을 사용하여 그래프를 만들었으며 x 좌표와 y 좌표에 'X'를 넣으려고합니다. 그렇다면 점의 꼭대기에 최소 제곱 회귀선을 그려 봅니다.2D 배열을 사용한 그래프 표시

char[][] graph = new char[21][42]; 

for (int i = 0; i < count; ++i) { 
graph[21 - 1 - yCoords[i]][xCoords[i] + 1] = 'X'; 
} 

// plot the regression line 
for (int i = 0; i < graph.length; i++) { 
int yPred = Math.round(yMean + slope * (i - xMean)); // calculate regression value 
graph[21-1-yPred][i + 1] = graph[21-1-yPred][i + 1 ] == 'X' ? '*' : '-'; //problem somewhere here 
} 

//This is how i initialized my array 
public static void initializeArray(char[][] charArray) { 
    for(int k =0; k< charArray.length; k++) { 
     for(int d = 0; d < charArray[0].length;d++) { 
     charArray[k][d] = ' '; 
     } 
    } 
    for (int i = 0; i < charArray.length; ++i) { 
    charArray[i][0] = '/'; 
    } 
    charArray[20][0] = '+'; 

    for (int i = 1; i < charArray[0].length; ++i) { 
    charArray[20][i] = '-'; 
    } 
} 

전체 code.If의 사람이 다음 아래에 의견을 내가 설명하거나 내 문제에 더 많은 코드를 제공 할 것입니다 문제를 파악 힘든 시간을 가지고이 아니라는 것을 기억하시기 바랍니다 : 다음은 내 코드입니다 .

지금이 출력이 표시됩니다.

enter image description here

내 예상 출력은 이것이다 :

enter image description here

문제는 회귀 라인을 플로팅으로 보인다. 그래서 저는 "X"를 사용하여 점을 나타냅니다. "-"는 회귀선 선분이고 "*"는 선분과 점이 같은 지점에있는 점을 나타냅니다. 자세한 내용을 기꺼이 제공합니다. 누군가 제발 나를 도와주세요.

+0

0에서 'graph.length'까지 플롯됩니다. graph.length는 첫 번째 차원의 길이와 같습니다. 21. 차트에서 대시를 계산하면 21 개가 표시됩니다. – Jamie

+0

그래서 어떻게 그 문제를 해결할 수 있습니까? @Jamie – Saad

+0

글쎄, 그래프 [0] .length – Jamie

답변

0

동일한 문제에 직면 한 모든 사람들에게 올바른 출력을 얻으려고 여기에 있습니다. 경계 밖으로 예외를 피하기 위해 루핑하는 동안 나는 -1을해야했다. 코드는 다음과 같습니다.

for (int i = 0; i < graph[0].length - 1; i++) { 
int yPred = (int) (yMean + (slope * (i - xMean))); 
if(yPred > 0 && yPred < 21) { 
    graph[21 - 1- yPred][i+1] = graph[21 - 1- yPred][i+1] == 'X' ? '*' : '-'; 
    }