Ir ao conteúdo

Posts recomendados

Postado

oa Noite 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 em anexo;
Obrigado
Abraço

Comparacao_de_Strings.rar

Postado
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;
    }
}
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("você saiu");
                    break;
            }
            System.out.println("");
            if (opcao == 0) {

                break;

            }
        }

    }

}

Bom Dia segue o código acima, Obrigado pela dica.

Abraço.

adicionado 11 minutos depois

@giovanerosalizot

Estou criando objeto no Método main , mas ao executar o código não esta compilando apresentando vários erros, o objetivo é fazer o exercício com programação Orientada a Objetos, inicialmente eu fiz td em uma classe com o método Main, mas não era essa a proposta e tive que adaptar o exercício criando duas classe e chamando os Métodos da classe Java na classe com o Método Main.

Abaixo segue a primeira versão do exercício no Método Main, talvez eu estou fazendo errado a adaptação para a criação de duas classes.

Quem puder me ajudar estou grato desde já.

package contador_de_verbos;

import java.util.Scanner;
import static jdk.nashorn.internal.objects.NativeString.substring;
import static jdk.nashorn.internal.objects.NativeString.substring;

public class TestaString {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        /**
         *
         * @param str1
         * @param str2
         * @param tamanhodastr1
         * @param tamanhodastr2
         */
        //public static void contem(String str1, String str2, int tamanhodastr1, int tamanhodastr2) {
        /**
         * @param args the command line arguments
         */
        Scanner ler = new Scanner(System.in);
        System.out.println("String nº1:");
        String str1 = ler.nextLine();
        System.out.println("String nº2:");
        String str2 = ler.nextLine();

        /*
        String str1  = "Giovane";

        String[] c;
        c = c.split(" ");

        int e = 0;

    /**
     *
     * @param str1
     * @param str2
         */
        int contaContem = 0;
        int contem = 0;
        int aus = 0;
        int naocontem = 0;
        int tamanhodastr1 = str1.length();
        int tamanhodastr2 = str2.length();
        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("Strings iguais nao e permitido");
                    }
                        
                } else {
                    contaContem++;
                }

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

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

            naocontem = 0;
        }
        System.out.println("A String 2 Contem " + contem + " vezes na String 1");
        System.out.println("A primeira ocorrencia aparece em " + aus + " ");
    }
}
Esse Código funciona perfeitamente, mas tenetei adaptalo dividindo os metodos em classe e os chmando no Método Main mas nao estou conseguindo.

 

Postado

@giovanerosalizot você está um pouco confuso quanto a orientação a objetos.

 

Sua classe principal, que contém o main, apenas inicializa a aplicação. Você não precisa desenvolver a lógica nessa classe. Apenas faça as chamadas para os outros métodos.

 

Exemplo:

- Crie a classe ManipulaStrings.java que contém o main

- Crie uma classe FuncoesString que vai conter todos os métodos para fazer as validações propostas pelo seu exercício

- Crie uma classe CadeiaStrings que vai retornar as cadeias primária e secundária de acordo com seus critérios. Se quiser que as cadeias sejam geradas aleatoriamente, manualmente ou que sejam pre-definidas.

 

package teste;

public class ManipulaStrings {
  
  private CadeiaStrings cadeia = new CadeiaString();
  private FuncoesString funcoes = new FuncoesString();
    
  
 public static void main(String args[]) {
   cadeia.lerCadeiaPrimaria();
   cadeia.lerCadeiaSecundaria();
   funcoes.executaManipulacoes(cadeia.getCadeiaPrimaria(), cadeia.getCadeiaSecundaria());
 }    
}

 

 

 

A classe cadeia fica responsável por ler o input de ambas cadeias e guardar os arrays, que através de um método get serão repassados como parâmetro pela main para o método executaManipulacoes(String[] cadeiaPrimaria, String[] cadeiaSecundaria) da classe FuncoesString. Esse método, por sua vez, vai realizar chamadas para os diversos métodos privados dessa classe que executam as manipulações especificadas pelo exercício.

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!