Java

Estou com uma duvida na manipulação de String:

Bom meu exercício consiste em Desenvolver uma classe em java, como o objetivo de realizar analises em uma cadeia de caracteres. Que contem alguns métodos, como:

  • Definir(setar) uma cadeia principal de caracteres;
  • Definir(setar) uma cadeia secundária de caracteres;
  • Retorna quantas vezes o cadeia secundária ocorre na cadeia principal;
  • Retorna a posição da primeira ocorrência da cadeia secundária dentro da principal;
  • Dado uma faixa de posições, retornar quantas vezes o cadeia secundária ocorre na cadeia principal;
  • Dado uma faixa de posições, retornar a posição da primeira ocorrência da cadeia secundária dentro da principal.

Mas estou com problemas para chamar as funções na Classe com o Método Main; Quem possa analisar meu código e me ajudar fico grato desde já: Meu código segue abaixo:

Classe com o Métodos:`package comparacao_de_strings;

/**
 *
 * @author Administrador
 */
public class Strings {

    private int aux;
    private int contaContem;
    private int contem;
    private int naocontem;
    String str1;
    String str2;

    public int getAux() {
        return aux;
    }

    public void setAux(int aux) {

        this.aux = aux;
    }

    public int getContaContem() {
        return contaContem;
    }

    public void setContaContem(int contaContem) {
        this.contaContem = contaContem;
    }

    public int getContem() {

        return contem;

    }

    public void setContem(int contem) {

        this.contem = contem;
    }

    public int getNaocontem() {
        return naocontem;
    }

    public void setNaocontem(int naocontem) {
        this.naocontem = naocontem;
    }

    public String getStr1() {
        return str1;
    }

    public void setStr1(String str1) {
        this.str1 = str1;
    }

    public String getStr2() {
        return str2;
    }

    public void setStr2(String str2) {
        this.str2 = str2;
    }

    public boolean existe() {
        int tamP = str1.length();
        int tamS = str2.length();
        int i, j = 0;
        for (i = 0; i <= tamP - tamS; i++) {
            if (str1.charAt(i) == str2.charAt(0)) {
                while (str1.charAt(i + j) == str2.charAt(j)) {
                    j++;
                    if (j == tamS);
                    return true;

                }
            }
        }
        return false;
    }

    public int compararStrings(String str1, String str2) {
        int tamanhodastr1 = str1.length();
        int tamanhodastr2 = str2.length();
        int aux = 0;
        for (int i = 0; i < tamanhodastr1; i++) {

            for (int x = 0; x < tamanhodastr2; x++) {
                if (str2.charAt(x) != str1.charAt(i + x)) {
                    naocontem++;
                    if (str1.equals(str2)) {
                        System.out.println("");
                    }

                } else {

                    contaContem++;
                }

                if (naocontem > 0) {
                    break;
                }
            }
            if (naocontem == 0) {
                contem++;

                if (contem == 1) {
                    aux = i;
                }
            }

            naocontem = 0;
        }
        return contem;
    }

    public int contFaisa(String str1, String str2, int inicio, int fim) {
        int aux = 0;

        int tamanhodastr1 = fim;
        int tamanhodastr2 = str2.length();

        for (int i = inicio; i < tamanhodastr1; i++) {

            for (int x = 0; x < tamanhodastr2; x++) {
                if (str2.charAt(x) != str1.charAt(i + x)) {
                    naocontem++;
                } else {
                    contaContem++;

                }

                if (naocontem > 0) {
                    break;
                }
            }
            if (naocontem == 0) {
                contem++;

                if (contem == 1) {
                    aux = i;
                }
            }

            naocontem = 0;
        }
        return contem;
    }
}

Classe Java que cria Objeto e chama os Métodos :`package comparacao_de_strings;

import java.util.Scanner;

/**
 *
 * @author Administrador
 */
public class Comparacao_de_Strings {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        int opcao;
        String str1;
        String str2;
        int inicio;
        int fim;
        int sair;
        Strings t = new Strings();
        Scanner ler = new Scanner(System.in);
        while (true) {
            System.out.println("Digite 1 para comparar Strings ; "
                    + "2 para comparar em uma faixa de posições ;"
                    + " ou 0 para sair");
            opcao = ler.nextInt();
            switch (opcao) {
                case 1:
                    System.out.println("String nº1:");
                    
                    str1 = ler.nextLine();
                    
                    System.out.println("String nº2:");
                    
                    str2 = ler.nextLine();
                    
                    System.out.println("A String 2 Contem " + t.getContem() + " vezes na String 1");
                    System.out.println("A primeira ocorrencia aparece em " + t.getAux() + " ");
                    t.compararStrings(str1, str2);
                    break;
                case 2:
                    System.out.println("String nº1:");
                    str1 = ler.nextLine();
                    System.out.println("String nº2:");
                    str2 = ler.nextLine();
                    System.out.println("Escreva o valor de inicio para a faixa de Valores");
                    inicio = ler.nextInt();
                    System.out.println("Escreva o valor final para a faixa de Valores");
                    fim = ler.nextInt();
                    t.contFaisa(str1, str2, inicio, fim);
                    System.out.println("A String 2 Contem " + t.getContem() + " vezes na String 1");
                    System.out.println("A primeira ocorrencia aparece em " + t.getAux() + " ");
                    break;
                default:
                    System.out.println("Vc saiu");
                    break;
            }
            System.out.println("");
            if (opcao == 0) {

                break;

            }
        }

    }

}

Cara coloca o seu código entre < code> < /code> sem os espaços, assim fica melhor para te ajudar.

1 curtida

Espero ter corrigido
Obrigado

  • Substitua todos os nextLine() por next()
  • A ordem das operações estão erradas

Exemplo no case 1:

str2 = ler.nextLine();
t.setStr1(str1);
t.setStr2(str2);
t.compararStrings(str1, str2);
System.out.println("A String 2 Contem " + t.getContem() + " vezes na String 1");
System.out.println("A primeira ocorrencia aparece em " + t.getAux() + " ");
// t.compararStrings(str1, str2);
  • A sua classe Strings está muito confusa, e porisso terá dificuldades de chamar no main

Nunca use a palavra AUX, recomendo que use os nomes dos métodos, atributos e classes mais apropriados, próximo do enunciado e que sua classe Strings seja parecido com o exemplo:

public class Strings {
  String str1;
  String str2;

  public void setStr1(String str1);
  public String getStr1();
  public void setStr2(String str2);
  public String getStr2();
  public void setStrings(String str1, String str2) {
    setStr1(str1);
    setStr2(str2);
  }
  public int contarOcorrencias() {
    return contarOcorrencias(0, getStr1().length());
  }
  public int obterPrimeiraOcorrencia() {
    return obterPrimeiraOcorrencia(0, getStr1().length());
  }
  public int contarOcorrencias(int inicio, int fim) {
    String str1 = getStr1();
    String str2 = getStr2();
    // TODO
  }
  public int obterPrimeiraOcorrencia(int inicio, int fim) {
    String str1 = getStr1();
    String str2 = getStr2();
    // TODO
  }
}
1 curtida