我是初学者,我知道我犯了一个菜鸟错误。我的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);
}
答案 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
?输出值并查看差异是什么!
最后,我添加了一些逻辑来处理找不到匹配的明显可能性。