char é um tipo primitivo e não possui métodos. Pode usar o Character, ao invés de char.
Obs: não existe autoboxing de array de primitivos para array de objetos. A conversão tem que ser manual.
staroski1 like
Não precisa usar Character, é um overhead desnecessário.
O método compareTo das classes Comparable deve sempre retornar a diferença do objeto em si em relação ao objeto passado como parâmetro.
Partindo desse princípio, para calcular a diferença dos tipos primitivos char, short, int, float, long e double basta usar o operador menos, afinal o resultado de uma subtração é chamado de diferença:
publicstaticvoidmain(Stringargs[]){intopcao,qte;Stringnum,saida="| ";//char num1;booleanok;try{do{num=JOptionPane.showInputDialog(“Ordenar\n”+“Digiteaopçãoparaordenar:\n”+“1-NumerosDecimais\n”+“2-Caracteres\n”);opcao=Integer.parseInt(num);switch(opcao){case1:num=JOptionPane.showInputDialog(“Quantosnumeros?”);qte=Integer.parseInt(num);floatnumeros[]=newfloat[qte];for(inti=0;i<qte;i++){num=JOptionPane.showInputDialog(“Numero[”+i+“]”);numeros[i]=Float.parseFloat(num);}Ordenacao.bolhaf(numeros);for(inti=0;i<numeros.length;i++){saida=saida+numeros[i]+" | ";}JOptionPane.showMessageDialog(null,“NumerosOrdenados:\n”+saida);ok=true;break;case2:num=JOptionPane.showInputDialog(“QuantosCaracteres?”);qte=Integer.parseInt(num);charpalavras[]=newchar[qte];for(inti=0;i<qte;i++){num=JOptionPane.showInputDialog(“Caractere[”+i+“]”);palavras[i]=num.charAt(i);}Ordenacao.bolhaf(palavras);for(inti=0;i<palavras.length;i++){saida=saida+palavras[i]+" | ";}JOptionPane.showMessageDialog(null,“CaracteresOrdenados:\n”+saida);ok=true;break;default:JOptionPane.showMessageDialog(null,“OpçãoInvalida!\n”+“TenteNovamente!”);ok=false;}}while(!ok);}catch(Exceptione){JOptionPane.showMessageDialog(null,“Ocorreuumerrodurantealeitura!”);// <strong>ELE CAI AQUI</strong>}}//fim do metodo construtor
OBS.: QUANDO DIGITO A QUANTIDADE DE CARACTERES E APÓS COMEÇO A DIGITAR O CARACTERE; DIGITO O 1º (TUDO BEM), MAS QUANDO DIGITO O SEGUNDO CARACTERE CAI NA EXCEÇÃO!
A
Solucao aceita
anon62916717
Dentro do for, tem um ArrayIndexOutOfBoundsException, previsto na instrução a seguir. palavras[i] = num.charAt(i);
Altere para palavras[i] = num.charAt(0);
O método de ordenação tem como parâmetro um array de char, e você está passando um tipo diferente, crie outro que receba como parâmetro um array de float e aproveite a estrutura criada.
jairodione
Ola addiler!
Solucionou meu problema!
Agora com relação a (O método de ordenação tem como parâmetro um array de char, e você está passando um tipo diferente, crie outro que receba como parâmetro um array de float e aproveite a estrutura criada.), fiz desta forma pois no programa principal coloquei a escolha de numero ou caractere, se for numero ele chama o método que utiliza como parâmetro o numero, e sendo caractere ele chama o metodo que utiliza como parâmetro caractere.
O código do programa principal é este que você me orientou a fazer a modificação para funcionar corretamente.
Agora o código que tem os métodos, ou seja as funções ou procedimentos está descrito abaixo: