Dúvida com comparação de strings

Boa tarde pessoal!

Estou resolvendo um exercício de programação onde ao receber dois números, preciso dizer qual deles é segmento do outro, e se nenhum for segmento do outro, informar também…

Por exemplo: 123680 e 680 = B é segmento de A
378 e 1237804 = A é segmento de B
11 e 1234 = não existe segmento

OBSERVAÇÃO INICIAL: Estou no primeiro semestre e não posso usar nenhum método pronto. Apenas charAt, length e conversões de tipos. E não estou programando OO, ainda é procedural, portanto a solução vai ser bem braçal e por isso esse espaguete de código…

Pois então, primeiramente descobri qual é o maior número, converti ambos para String, para poder iterar pelos elementos da mesma. E cheguei ao código abaixo:

//Se o segundo numero for maior que o primeiro. if (segMaiorQPrim) { contadorCharEncontrado = numeroA.length()-1; for (int j = 0;j < numeroA.length()-1;j++) { encontrouNumero = false; //while (!encontrouNumero) { for (int k = 0;k < numeroB.length()-1;k++) { if (numeroB.charAt(k) == numeroA.charAt(j) && !encontrouNumero) { encontrouNumero = true; contadorCharEncontrado--; } } //} } if (contadorCharEncontrado == 0) { diga ("a é segmento de b"); } else { diga("um não é segmento do outro"); } //Se o primeiro número for maior que o segundo. } else { contadorCharEncontrado = numeroB.length()-1; for (int l = 0;l < numeroB.length()-1;l++) { encontrouNumero = false; while (!encontrouNumero) { for (int m = 0;m < numeroA.length()-1;m++) { if (numeroA.charAt(m) == numeroB.charAt(l)) { encontrouNumero = true; contadorCharEncontrado--; } } } } if (contadorCharEncontrado == 0) { diga("b é segmento de a"); } else { diga("um não é segmento do outro"); }

Com os números 11 e 1234 o resultado deveria ser “um não é segmento do outro”, porém não é isso que acontece, o programa sempre diz que “a é segmento de b”. Já fiz o teste de mesa e ainda assim não consegui resolver esse problema.

Alguém tem alguma dica pra descobrir se determinado número se encontra dentro de outro?

Obrigado!

A forma mais simples é você criar um método que faça a mesma coisa que o “String.indexOf”.

Dica:
a) Resolva seu problema com String.indexOf
b) Crie um método que faz a mesma coisa que o indexOf
c) Chame esse método em vez do indexOf

É mais fácil que tentar debugar esse código muito grande.

[quote=entanglement]A forma mais simples é você criar um método que faça a mesma coisa que o “String.indexOf”.

Dica:
a) Resolva seu problema com String.indexOf
b) Crie um método que faz a mesma coisa que o indexOf
c) Chame esse método em vez do indexOf

É mais fácil que tentar debugar esse código muito grande. [/quote]

Entendi. Vou estudar o indexOf e tentar implementar aqui. Obrigado pela dica!

Outra coisa que esqueci de mencionar acima é que não estamos programando OO, apesar de estar usando o Java, ainda estamos no procedural, programando tudo dentro do main…

Não estou dizendo para você fazer tudo dentro ou fora do main.

O seguinte código é completamente procedural (não estou usando absolutamente nenhum conceito de OO), só crio um objeto para poder rodar o código:

class Teste {
    public static void main (String[] args) {
        Teste t = new Teste();
        t.processa();
    }
    public void processa() {
        // escreva aqui as coisas que você tem de escrever, oras bolas
    }
}