Olá Pessoal!
Estou com uma dificuldade em corrigir o erro no método public static boolean binaria(String x, String numeros[]).
Fiz uma pesquisa e localizei este método aqui mesmo no guj, ele funciona normalmente se for utilizados numeros inteiros. Abaixo está descrito o algoritmo:
//inicio do metodo construtor
public static void main(String args[]) {
int opcao, qte, x;
String num;
boolean certo, achou;
try {
num = JOptionPane.showInputDialog(“Quantos numeros deseja gravar?”);
qte = Integer.parseInt(num);
int numeros[] = new int[qte];
for (int i = 0; i < qte; i++) {
num = JOptionPane.showInputDialog(“Numero[” + i + “]”);
numeros[i] = Integer.parseInt(num);
}
num = JOptionPane.showInputDialog(“Qual numero deseja pesquisar?”);
x = Integer.parseInt(num);
achou = BuscaCompleto.linear(x, numeros);
if (achou) {
JOptionPane.showMessageDialog(null, "Numero presente na relação: " + x);
} else {
JOptionPane.showMessageDialog(null, “Numero não presente na relação”);
}
certo = true;
num = JOptionPane.showInputDialog(“Quantas palavras?”);
qte = Integer.parseInt(num);
String palavras[] = new String[qte];
for (int i = 0; i < qte; i++) {
num = JOptionPane.showInputDialog(“Palavras[” + i + “]”);
palavras[i] = num;
}
num = JOptionPane.showInputDialog(“Qual palavra deseja pesquisar?”);
achou = binaria(num, palavras);
if (achou) {
JOptionPane.showMessageDialog(null, "Palavra presente na relação: "+achou);
} else {
JOptionPane.showMessageDialog(null, “Palavra não presente na relação”);
}
certo = true;
} catch (Exception e) {
JOptionPane.showMessageDialog(null, “Ocorreu um erro durante a leitura!”);
}
}//fim do metodo construtor
//inicio do metodo para busca binaria de String
public static boolean binaria(String x, String numeros[]){
int inicio = 0, fim = numeros.length - 1;
int meio;
while(inicio <= fim){
meio = (inicio + fim) / 2;
if(x == numeros[meio])
return true;
if(x < numeros[meio])//AQUI OCORRE O ERRO A IDE INFORMA O SEGUINTE: "BAD OPERAND TYPES FOR BINARY OPERATOR '<' FIRST TYPE: STRING SEVOND TYPE: STRING
fim = meio - 1;
else
inicio = meio + 1;
}
return false;
}
Acima é o método que localizei aqui no guj, está com alteração nos parametros que era do tipo int, e agora são String. Como corrigir?