2013-11-25 99 views
2

我是一名初学者,我知道我正在犯新人的错误。我在我的JApplet的actionePerformed部分中有以下代码。 for循环中的if语句应该搜索数组s []中的匹配名称(t6是一个JtextArea),并将int m的值赋给int n,这样我可以退出s [i]的所有信息。问题是我的n总是0,不管是什么!我在做什么?搜索循环不能正常工作

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

“我”持有的价值是多少? 'for(int m = 0; m> i; m ++){' –

+0

int i从0开始。每次将对象添加到s [],i ++时。所以几乎我= s []。长度 – AshkanMil

回答

1

我敢打赌,你的问题是,您在开始int n = 0

看看你的循环

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

钍唯一途径,这将不会是一个无限循环,如果i为0或更少。我认为这是对你没有一个无限循环。因为你没有得到ArrayIndexOutOfBoundsException我会假设i是0而不是负值。因此

对(INT米= 0; M> I;米++){

指出继续循环如果m大于0,它永远不会是。

所以你的数组索引只会是0一次。它永远不会循环。

即使你i++,m永远不会大于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; 
} 

...你看到没有,我改名为晦涩nmatchingIndex,遮遮掩掩t6searchSource,可疑iupperBound(我确信这是它应该是什么样的myList长度) ,有问题的ta2变成outputElement,以及害羞的smyList。我还解开了通话和匹配,现在您可以阅读该代码。而且,你可以输出不同的部分来调试它。认为sourceText应该匹配thisName?输出值并查看差异是什么!

最后,我添加了一些逻辑来处理找不到匹配的明显可能性。

+0

你是绝对正确的,但是这是我写的第一个长码。这只是代码的一部分。我有更多的500 LOC。与许多JLabels和JTextareas等等,所以当时我正在创建我的面板时使用数字更方便。我希望有一天我能够流畅地写出像你的例子那样的代码。谢谢。 – AshkanMil