簡體   English   中英

這段代碼有什么問題? Netbeans 未編譯代碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM