Loops 搜索循环运行不正常
我是一个新手,我知道我犯了一个新手错误。我在我的ActionPerformed部分JApplet中有以下代码。for循环中的if语句应该在数组s[](t6是一个JtextArea)中搜索匹配的名称,并将int m的值赋给int n,这样我就可以删除s[i]的所有信息。问题是,无论发生什么,我的n总是0!!!我在干什么Loops 搜索循环运行不正常,loops,search,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(
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);
}
我打赌你的问题是你开始
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++
,m
也永远不会大于i
,因为它们是均匀开始的,并且会均匀递增
只是一种预感
也许你想要这个
for(int m = 0; m < s.length ; m++){
// iterates [size of the s array] times
for(int m=0;m
如果您使用更具描述性的变量名,并且您没有在一条语句中链接和连接这么多,那么您的代码将更容易调试。您可以更详细一点;编写最短或最晦涩的代码不是竞争
我还建议您初始化变量,并为失败做好准备
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;
}
int matchingIndex=0;//初始化该变量!
int上限=myList.legnth;
对于(int m=0;m>上限;m++){
字符串sourceText=searchSource.getText();
字符串thisName=myList[m].getName();
if(sourceText.equals(thisName)){
匹配指数=m;
}
}
如果(匹配索引<1){
outputElement.setText('No match');//或以其他方式显示错误
返回;
}
…你看,我把晦涩的n
改名为matchingIndex
,神秘的t6
改名为searchSource
,可疑的I
改名为上限
(我确定了它应该是什么,我的列表长度),可疑的ta2
变成outputElement
,羞涩的s
变成myList
。我还取消了调用和匹配的限制,现在你可以阅读代码了。你可以输出不同的部分来调试它。想想sourceText
应该匹配thisName
?输出值,看看di是什么准备好了
最后,我添加了一些逻辑来处理找不到匹配项的明显可能性。值对(int m=0;m>I;m++)有什么影响?
for(int m=0;m>I;m++){
int I在0处启动。每次将对象添加到s[],I++。相当多的I=s[].lengthYou先生是100%正确的。我本想把<放在那里,但可能打错了。非常感谢。我可能看了20多次,没有注意到。FacePalm你是绝对正确的,但是这是我正在编写的第一个长代码。这只是代码的一部分。我有500多个LOC,有许多jlabel和JTextareas等。因此,在我创建面板时,使用数字更方便。我希望有一天我能流利地编写像您的示例那样的代码。谢谢。