Executar ciclo FOR dentro de outra FOR

3 respostas
java
Matrirxp
for(int g=0;g<vl.VerbsList.length;g++){ //Primeira For
    
   
    
    for(int h=0;h<TextParts.length;h++){ //For que deve ser executada por inteiro

        
        //if(TextParts[h].length()>vl.VerbsList[g].length()){
            for(int j =0;j<BaseWord.length();j++){

              try{
              if(BaseWord.charAt(j) == TextParts[h].charAt(j)){
                  System.out.println("BaseWord "+BaseWord);
                  System.out.println("TextParts "+TextParts[h]);
                  System.out.println("h "+h);
                   TempPoints += 1;
              }
              }catch(Exception e){
                  TempPoints = 0;
                  j = BaseWord.length();
              }

            }
            
        
        //Ciclo Text Parts
        
        if(TempPoints > Points){
        Word = TextParts[h];
        TempPosition = h;
        Points = TempPoints;
        TempPoints = 0;
        BaseWord = "";
        System.out.println("Points: "+Points);
        }else{
        TempPoints = 0;
        BaseWord = "";
        }
         //System.out.println("h "+h);

        
   }

    //Ciclo de Verbal List
    
    
}

Quero que em uma execução desse ciclo:

for(int g=0;g<vl.VerbsList.length;g++){

O programa execute todo esse outro ciclo:

for(int h=0;h<TextParts.length;h++){

(A primeira for tem que esperar a segunda acabar para continuar)

Assim eu consigo comparar os caracteres de um texto com os caracteres do outro texto.

Porem a primeira for não esta esperando a segunda terminar

Teste:
inserir a descrição da imagem aqui

O valor de “h” sempre e 0.
Isso significa que a for sempre esta recomeçando.

Onde eu Errei?

(O código do tópico não e o código completo)

imgur.com/PmGw6gT

3 Respostas

adriano_si

Está dando pra ver porque está faltando muita informação pra podermos tentar lhe explicar porque “talvez” não está funcionando como você quer.

1 - O console imprime toda a execução?
2 - Você tem 3 fors aninhados e não apenas 2
3 - Em alguns pontos (como na exceção por exemplo, você muda as variáveis e objetos que fazem parte do filtro do seu laço como BaseWord e o j.

Pode estar acontecendo um monte de coisa que sem saber o que tem em VerbList, TextParts e BaseWord fica BEM difícil identificar onde exatamente está seu erro. É bem provável que o Loop inteiro até seja maior do que está aí e esteja sendo executado, só que ele não tem mais nada pra imprimir.

Se possível colocar o código inteiro seria de grande ajuda pra podermos te ajudar :wink:

Matrirxp

Eu consegui resolver.
Aparentemente o erro estava na hora de resetar a variável “BaseWord”

inserir a descrição da imagem aqui

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package dino.ai;

import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Matheus Markies
 */
public class VerbDetector extends Thread{

    String Text;
    String[] TextParts;
    
    List<String> SimilarVerbs = new ArrayList<String>();
    List<String> TextVerbs = new ArrayList<String>();
    
    List<Integer> VerbsPositions = new ArrayList<Integer>();
    int TempPosition;
    
    boolean Analyze;
    
    int TempPoints;
    int Points;
    
    int b;
    
    String Word;
    String BaseWord;
    int Proof;
    
    public void run(){
       
        while (Analyze) {            
        
    Verbs vl = new Verbs();
    TextParts = Text.split(" ");
    
    for(int g=0;g<vl.VerbsList.length;g++){
        BaseWord = "";
        if(vl.VerbsList[g].length() > 2){
       for(int i = 0;i<vl.VerbsList[g].length();i++){
                if(i<(vl.VerbsList[g].length()-2)){
                    BaseWord = BaseWord + vl.VerbsList[g].charAt(i);
                }
            }
        }else{
            BaseWord = vl.VerbsList[g];
        }
        
        for(int h=0;h<TextParts.length;h++){

            
            //if(TextParts[h].length()>vl.VerbsList[g].length()){
                for(int j =0;j<BaseWord.length();j++){
 
                  try{
                  if(BaseWord.charAt(j) == TextParts[h].charAt(j)){
                      //System.out.println("BaseWord "+BaseWord);
                      //System.out.println("TextParts "+TextParts[h]);
                      //System.out.println("Tamanho TextParts: " + TextParts.length);
                      //System.out.println("Tamanho VerbsList: "+vl.VerbsList.length);
                      
                      //System.out.println("h "+h);
                       TempPoints += 1;
                  }else{

                  }
                  }catch(Exception e){
                      TempPoints = 0;
                      j++;
                  }

                }
                
            //}else{
             //   for(int j =0;j<TextParts[h].length();j++){
               //   try{
                //    if(TextParts[h].charAt(j) == vl.VerbsList[g].charAt(j)){
                //       TempPoints += 1; 
                 // }
                 // }catch(Exception e){
                   //   TempPoints = 0;
                  //    j++;
                  //}
                //}
            //}
            //Ciclo Text Parts
            
            if(TempPoints > Points){
            Word = TextParts[h];
            TempPosition = h;
            Points = TempPoints;
            TempPoints = 0;
            //BaseWord = "";
            System.out.println("Points: "+Points);
            }else{
            TempPoints = 0;
            //BaseWord = "";
            }
             //System.out.println("h "+h);
 
            
       }
  
        //Ciclo de Verbal List
        if(vl.VerbsList[g].length() > 2){
        Proof = (100*Points)/(vl.VerbsList[g].length() - 2);
        }else{
        Proof = (100*Points)/(vl.VerbsList[g].length());   
        }
        if(Proof >= 90){
            System.out.println("Proof: "+Proof);
            for(int i = 0;i<SimilarVerbs.size();i++){
                if(SimilarVerbs.get(i) == vl.VerbsList[g]){
                    b +=1;
                }
            }
            if(b == 0){
            SimilarVerbs.add(vl.VerbsList[g]);
            TextVerbs.add(Word);
            VerbsPositions.add(TempPosition);
            
            System.out.println("SimilarVerbs "+SimilarVerbs);
            
            }else{
             b = 0;
            }
            Points = 0;
        }else{
            Points = 0;
        }
        
    }
    
    for(int i=0;i<SimilarVerbs.size();i++){
    LanguageProcessingManager.CA.SetSimilarWord(SimilarVerbs.get(i));
    LanguageProcessingManager.CA.SetVerb(TextVerbs.get(i));   
    }
    
    LanguageProcessingManager.GOSI.SetText(Text);
    int size = VerbsPositions.size();
    int[] result = new int[size];
    Integer[] temp = VerbsPositions.toArray(new Integer[size]);
    for (int n = 0; n < size; ++n) {
    result[n] = temp[n];
    }
    LanguageProcessingManager.GOSI.SetVerbsPositions(result);
    Analyze = false;
    
            try {
                Thread.sleep(10);
            } catch (InterruptedException ex) {
                Logger.getLogger(VerbDetector.class.getName()).log(Level.SEVERE, null, ex);
            }
    
    }//Analyze
    
    }

    public void SetTextAnalyze(String SetValue){
        Text = SetValue;
        //SimilarVerbs.clear();
        //TextVerbs.clear();
        Analyze = true;
    }
    public List<String> GetSimilarVerbs(){
    return SimilarVerbs;
    }
    public List<String> GetVerbs(){
    return TextVerbs;
    }
    public int[] GetVerbsPosition(){
        
    int size = VerbsPositions.size();
    int[] result = new int[size];
    Integer[] temp = VerbsPositions.toArray(new Integer[size]);
    for (int n = 0; n < size; ++n) {
    result[n] = temp[n];
    }
        
    return result;
    }
    
}

Esse e o código inteiro para quem quiser dar uma olhada.

Obrigado!

adriano_si

Boa…

Valeu por compartilhar, pode ajudar quem chegar depois na mesma questão. Excelente comportamento de fórum :smiley:

Abraços e bons estudos :wink:

Criado 19 de julho de 2019
Ultima resposta 19 de jul. de 2019
Respostas 3
Participantes 2