搜索循环不正常

时间:2013-11-25 01:20:11

标签: loops search

我是初学者,我知道我犯了一个菜鸟错误。我的actionPerformed部分在我的JApplet中有以下代码。 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);
}

2 个答案:

答案 0 :(得分:1)

我打赌你问题是你开始int n = 0

看看你的循环

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

如果i为0或更小,那么这将不是无限循环。我会假设它没有得到无限循环。由于你没有得到ArrayIndexOutOfBoundsException,我会假设i为0而不是负数。因此

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

声明如果m大于0,则会继续循环,这是永远不会的。

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

即使您i++m也不会大于i,因为它们均匀开始并且会均匀增加。

只是预感

也许你想要这个

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

// iterates [size of the s array] times

答案 1 :(得分: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,将t6重新命名为searchSource,将i重命名为upperBound 1}}(我确定它应该是什么,myList的长度),有问题的ta2变成outputElement,而害羞的s变成{{1} }}。我还解开了调用和匹配,现在你可以读取该代码了。并且,您可以输出不同的部分进行调试。认为myList应该匹配sourceText?输出值并查看差异是什么!

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