Что не так в этом кодексе? NetBeans не компилирует код - PullRequest
0 голосов
/ 17 марта 2020

Что не так с этим фрагментом кода? Я пытаюсь решить вопрос, где у нас есть 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);
  }
}

Ответы [ 2 ]

1 голос
/ 17 марта 2020
if(res==0)
    result=false;

никогда не будет выполняться, и поэтому ваше время l oop никогда не прекратится.

Причина, по которой он никогда не будет выполнен, состоит в том, что res никогда не будет переназначен нулю после того, как вы для l oop начинается.

0 голосов
/ 17 марта 2020

Это будет работать, только если у вас нет совпадений. Как только res изменяется на отличное от 0. Он не имеет возможности изменить обратно на 0. Поэтому, если ваш код найдет какое-либо совпадение, он будет go бесконечным l oop.

Потому что один раз res = 1 выполняется, вы никогда не переназначаете его снова на 0. поэтому, когда он выполняется res = 1, он переходит в бесконечное l oop

Отредактировано Вы можете сделать это, в другой части просто сбросьте res до 0

    else{
        result=true;
        c++;
        res=0;
       }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...