[英]What's wrong in this Code? Netbeans not compiling the code
這段代碼有什么問題? 我試圖解決一個問題,我們有 2 個字符串,我們必須打印多少次我們可以從第一個字符串中提取第二個字符串。 當我運行此代碼時,我的 Netbeans 沒有響應,大約需要 25 秒、30 秒這樣的時間。
public class nine {
static int res=0;
public static void main(String[] args) {
int c=0;
String as="nniinneetteeeenn"; // first string
String ss = "nineteen"; // second string
char a[]= ss.toCharArray();
char b[]= as.toCharArray();
boolean result = true;
while(result == true){
for(int i=0;i<a.length;i++){
for(int j=0;j<b.length;j++){
if(a[i]==b[j]){
b[j]=32;
res=1;
break;
}
} //j loop ends
if(res==0)
break;
} // i loops ends
if(res==0)
result=false;
else{
result=true;
c++;
}
} // while loops ends
System.out.println(c);
}
}
if(res==0)
result=false;
永遠不會執行,因此您的 while 循環永遠不會終止。
它永遠不會執行的原因是因為一旦您的 for 循環開始, res
永遠不會重新分配為零。
只有當您沒有任何匹配項時,它才會起作用。 一旦 res 更改為 0 以外的值。就不可能更改回 0。這就是為什么如果您的代碼找到任何匹配項,它將進入無限循環。
因為一旦res = 1
被執行,你就再也不會將它重新賦值為 0 了。 這就是為什么當它執行res = 1
它會進入無限循環
編輯您可以這樣做,在您的其他部分只需將 res 重置為 0
else{
result=true;
c++;
res=0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.