2013-11-25 2 views
2

나는 초보자이며 신인간의 실수를 저지르고 있음을 알고 있습니다. 내 JApplet 내 actionePerformed 부분에 다음 코드가 있습니다. for 루프 내의 if 문은 배열 s [] (t6은 JtextArea)에서 일치하는 이름을 검색하고 int m의 값을 int n에 대입하여 s [i]의 모든 정보를 폐기 할 수 있습니다. 문제는 내 n이 언제나 0 인 것입니다 !!! 나는 무엇을 worng하고 있냐?검색 루프가 작동하지 않습니다.

if (e.getSource() == b7) { 
    for(int m=0; m>i ; m++){ 
     if(t6.getText().equals(s[m].getName())){ 
      n=m; 
     } 
    } 
    String text1 = ""; 
    text1 += s[n].getName().toString() + ", average=" + s[n].getAvgMark() 
       + ", " + s[n].getProgramName().toString() + ", " 
       + s[n].getDegree()+ ", " + s[n].getUni1() +"-"+ s[n].getStatus0() 
       +", "+ s[n].getUni2()+"-"+ s[n].getStatus1() + ", " 
       + s[n].getUni3()+"-"+ s[n].getStatus2()+"\n"; 

    ta2.setText(text1); 
} 
+0

'i'값은 무엇을 의미합니까? 'for (int m = 0; m> i; m ++) {' –

+0

int i는 객체가 s [], i ++에 추가 될 때마다 0에서 시작됩니다. 그래서 꽤 많이 나는 = []. 길이 – AshkanMil

답변

1

당신이 문제가되는 것은 int n = 0입니다. 루프에서

for(int m=0; m>i ; m++){ 

목 유일한 방법이 i가 0 이하의 경우 무한 루프가되지 않습니다. 나는 그것이 무한 루프를 얻지 못한다고 생각할 것이다. 그리고 당신은 ArrayIndexOutOfBoundsException을 얻지 못하기 때문에 나는 i이 0이고 음수가 아니라고 가정합니다. 따라서

위한

(INT의 m = 0; m> I; m ++) {m는 그것이 적이있는보다 0 경우 루프를 계속

상태.

그래서 배열 색인은 0입니다. 결코 반복되지 않습니다.

i++이라도 균등하게 시작하여 균등하게 증가하기 때문에 은 절대로 i보다 커야합니다.

그냥 직감

아마 당신이 원하는이

for(int m = 0; m < s.length ; m++){ 

// iterates [size of the s array] times 
+0

당신은 100 % 정확합니다. 나는 그곳에 <철자법>을 넣으려고했으나 오타를 잘못 입력했을 것입니다. 대단히 고마워. 아마 20 회 이상을 보았고 그 사실을 눈치 채지 못했습니다.* facepalm * – AshkanMil

0

코드는 좀 더 설명 변수 이름을 사용하는 경우 디버깅하기 쉬울 것입니다, 당신은 체인하지 않았고 순전히을 연결 하나의 진술. 좀 더 자세한 정보를 얻을 수 있습니다. 그것은 가장 짧거나 가장 모호한 코드를 작성하는 경쟁이 아닙니다!

변수를 초기화하고 오류를 대비하는 것이 좋습니다.

int matchingIndex = 0; // initialize that variable! 
int upperBound = myList.legnth; 
for(int m=0; m > upperBound; m++){ 
    String sourceText = searchSource.getText(); 
    String thisName = myList[m].getName(); 
    if(sourceText.equals(thisName)){ 
     matchingIndex = m; 
    } 
} 
if (matchingIndex < 1) { 
    outputElement.setText('No match'); // or some other way to display the error 
    return; 
} 

은 ... 당신은 내가 모호한 n-matchingIndex, searchSource의 비밀 t6, upperBound에 반신 반의 i 개명,이 볼 (그리고 나는 그것이 그것이 있어야 무엇 확인했다, myList의 길이) , 의심스러운 ta2outputElement이되고, 부끄러운 smyList이됩니다. 나는 또한 전화와 성냥을 풀었고 이제 당신은 그 코드를 읽을 수있다. 그리고 다른 부분을 출력하여 디버깅 할 수 있습니다. sourceTextthisName과 일치해야한다고 생각하십니까? 값을 출력하고 불일치가 무엇인지 확인하십시오!

마지막으로, 일치하는 항목이 없다는 확실한 가능성을 처리하기위한 논리를 추가했습니다.

+0

당신은 절대적으로 맞지만, 제가 작성한 첫 번째 긴 코드입니다. 이것은 코드의 일부일뿐입니다. 나는 그 500 LOC가 더있다. 많은 JLabel과 JTextareas 등으로 패널을 만들 때 숫자를 사용하는 것이 더 편리했습니다. 나는 언젠가 내가 당신의 예제처럼 코드를 작성할 수있을만큼 유창하다고 희망한다. 감사. – AshkanMil