Pessoal,
Tenho que fazer um programa onde leio um vetor de 3 elementos e tenho que ordenar ele em ordem crescente ou decrescente, conforme o usuário escolher.
Quando estou fazendo a leitura do vetor, se insiro um char tenho um retorno de InputMismatchException, onde já resolvi com o try...catch.
import java.util.Scanner;
import java.util.Arrays;
import java.io.*;
import java.util.InputMismatchException;
public class Ordena{
static void le_vetor(int[]vet){
for (int i=0; i<3; i++){
boolean erro = true;
while(erro == true){
try{
System.out.print("\nDigite o " +(i+1)+" elemento do vetor: ");
Scanner scan = new Scanner( System.in );
vet[i] = scan.nextInt();
}
catch(InputMismatchException ex){
System.out.print("\nERRO. Entrada invalida.\nDigite o apenas numeros.\n ");
}
if (vet[i] != números){
erro = true;
}
else{
erro = false;
}
}
}
}
static void ordena_vetor_cresc(int[]vet){
for(int i = 0; i < 3; i++){
for(int j = i; j < 3; j++){
if(vet[i] > vet[j]){
int aux = vet[j];
vet[j] = vet[i];
vet[i] = aux;
}
}
}
}
static void ordena_vetor_decresc(int[]vet){
for(int i = 0; i < 3; i++){
for(int j = i; j < 3; j++){
if(vet[i] < vet[j]){
int aux = vet[j];
vet[j] = vet[i];
vet[i] = aux;
}
}
}
}
static void imprime_vetor(int[]vet){
for (int i=0; i<3; i++){
System.out.print(vet[i]+" ");
}
}
public static void main(String[] args){
int[]vet = new int[3];
boolean erro = true;
char escolha = ' ';
le_vetor(vet);
while(erro){
System.out.println("\nPara ordenar o vetor em ordem crescente, digite C\nPara ordenar o vetor em ordem decrescente, digite D");
try{
escolha = (char)System.in.read();
}
catch(IOException e){
}
escolha = Character.toUpperCase(escolha);
if (escolha == 'C' || escolha == 'D'){
erro = false;
if (escolha == 'C'){
ordena_vetor_cresc(vet);
imprime_vetor(vet);
}
else{
ordena_vetor_decresc(vet);
imprime_vetor(vet);
}
}
else{
System.out.println("\n\nEntrada invalida.");
System.out.println("Escolha C ou D.\n\n");
}
}
}
}
if (vet[i] != números){
erro = true;
Como posso fazer para que eu consiga comparar se o elemento lido pelo teclado é um número e não um caractere aleatório?
Utilizo uma expressão regular? Se sim, como ficaria?
Valeu!