Vetor string para vetor de inteiro

tenho este código e le um string do tipo: { 234, 56, 78, 124} e transforma num vetor. Pretendo que o vetor que ele crie seja do tipo int para poder ordenar os valores. obrigado

public static void main(String[] args) {
    String stringDeNomes = "";
    Scanner s = new Scanner(System.in);
    System.out.println("Insira os valores: ");
    stringDeNomes = s.nextLine();

    String[] valores = stringDeNomes.split(", ");
    
    for ( int x =0; x <valores.length; x++){
        for ( int y = x+1; y <valores.length; y++) {
            if(valores[x]<valores[y]){
                
            }
        }
    }
   

}

}

dá um erro nesta linha:

Uncompilable source code - bad operand types for binary operator '<'
first type: java.lang.String
second type: java.lang.String

Você não pode usar o operador < para comparar valores Strings, para isso você terá que usar um vetor de int ou converter cada posição para inteiro.

como faço isso?

vc pode declarar um vetor de inteiros e converter as strings do array de strings em inteiros:

// declarando vetor de inteiros
int vet[] = new int[4];

// convertendo strings p inteiros 
for(int i = 0; i < vet.length; ++i) {
    vet[i] = Integer.parseInt(valores[i]);
}

dps é só ordenar o vetor de inteiros:

// ordenando
for(int x = 0; x < vet.length; ++x) {
    for(int y = x + 1; y < vet.length; ++y) {
        if(vet[x] > vet[y]) {
            int aux = vet[x];
            vet[x] = vet[y];
            vet[y] = aux;
        }
    }
}

obs.: eu inverti o sinal p colocar em ordem crescente

1 curtida

Você pode criar um vetor inteiro (int[] valoresInteiros) e, dentro do seu bloco for, atribuir a cada índice desse vetor o inteiro referente ao mesmo índice no vetor de strings (valores). Fica mais fácil de entender com o código:

String[] valores = stringDeNomes.split(", ");
int[] valoresInteiros = new int[valores.length];

for (int x = 0; x < valores.length; x++) {
	valoresInteiros[x] = Integer.parseInt(valores[x]);
	for (int y = x + 1; y < valores.length; y++) {
		if (valoresInteiros[x] < valoresInteiros[y]) {
               // seu código
		}
	}
}

O método Integer.parseInt(String value) converte uma string para inteiro.

Mas tome cuidado! A conversão pode lançar uma exceção (NumberFormatException), ou seja, interromper a execução do programa. Se você tentar converter uma palavra ou qualquer outro caractere que não seja um número. Resumindo, se o usuário digitar 234, 56, jacaré, 124, seu programa irá dar erro.

Você pode dar uma olhadinha nos blocos try { } catch { } e aprender sobre tratamento de exceções, algo necessário para qualquer programador.

2 curtidas

Desculpa, Matheus, não vi que tu já tinha respondido quando enviei a resposta kkkkkk

achei joia que vc falou do try { } catch { }
é um bom conselho

1 curtida