Ola amigos estou fazendo um trabalho academico e estou com o seguinte problema criei um textField para receber um vetor exp: “4,5,3,6,” e posteriomente encontra-se o seguinte metodo
ublic static void SelectionSort(int v[]) {
int index_min,
aux;
for (int i = 0; i < v.length; i++) {
index_min = i;
for (int j = i + 1; j < v.length; j++) {
if (v[j] < v[index_min]) {
index_min = j;
}
}
if (index_min != i) {
aux = v[index_min];
v[index_min] = v[i];
v[i] = aux;
}
}
}
Estou precisando converter as Virgulas do digitadas pelo usuario e adicionar ao vetor no metodo citado
Abraxx a tds e Obrigado Pela a ajuda
Isso mesmo criei 2 TextField e dentro da acao do botao
int vetor[];
int tam;
tam = Integer.parseInt(tf_tamanho.getText());
vetor = new int[tam];
1-criei um vetor vazio que sera passado ao metodo
2-converti o texto do textfield para para da o tamanho ao vetor
agora preciso pegar os dados da outra textField e repassar ao vetor
seuTextField.getText().split("\,")
isso vai fazer vc ter um monte de strings separadas, basta vc ir convertendo e armazenando em uma array de inteiros.
int vetor[];
int tam;
int numeros;
tam = Integer.parseInt(tf_tamanho.getText());
vetor = new int[tam];
numeros = Integer.parseInt(tf_vetor.getText());
vetor = new int[]{numeros};
MetodosDeOrdenacao m = new MetodosDeOrdenacao();
m.SelectionSort(vetor);
Nao pode ser uma Arrey de inteiros pq o metodo aceita somente o vetor
abraxx e Obrigado
int vetor[];
int numeros;
numeros = Integer.parseInt(tf_vetor.getText());
vetor = new int[]{numeros};
MetodosDeOrdenacao m = new MetodosDeOrdenacao();
m.SelectionSort(vetor);
limparCampos();
Como ficaria o split do vetor???
public class VetorSemGrafico {
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
MetodosDeOrdenacao m = new MetodosDeOrdenacao();
int tam;
int num;
System.out.println("digite o tamanho do vetor a ser criado");
tam = input.nextInt();
int[] vetor = new int[tam];
for (int counter = 0; counter < vetor.length; counter++) {
System.out.println("Digite um numero");
num = input.nextInt();
vetor[counter] = num;
for (int value : vetor) {
System.out.printf(" %d", value);
}
}
System.out.println("");
System.out.println("Vetor Ordenado");
m.insertionSort(vetor);
}
}
Sem o Swing estou pesquisando o split estou quase la ja posto o resultado
[code]public class MetodosDeOrdenacao {
//SelectionSort
public static void SelectionSort(int[] v) {
int index_min,
aux;
for (int i = 0; i < v.length; i++) {
index_min = i;
for (int j = i + 1; j < v.length; j++) {
if (v[j] < v[index_min]) {
index_min = j;
}
}
if (index_min != i) {
aux = v[index_min];
v[index_min] = v[i];
v[i] = aux;
}
}
for (int value : v){
System.out.printf(" %d ", value);
}
}
// Boble Sort
public void bubbleSort(int v[]) {
for (int i = v.length; i >= 1; i--) {
for (int j = 1; j < i; j++) {
if (v[j - 1] > v[j]) {
int aux = v[j];
v[j] = v[j - 1];
v[j - 1] = aux;
}
}
}for (int value : v){
System.out.printf(" %d ", value);
}
}
//Insertion Sort
public void insertionSort(int v[]) {
for (int i = 1; i < v.length; i++) {
int a = v[i];
int j;
for (j = i - 1; j >= 0 && v[j] > a; j--) {
v[j + 1] = v[j];
v[j] = a;
}
}
for (int value : v){
System.out.printf(" %d ", value);
}
}
}
[/code]
Para quem quer ficar por dentro os metodos de ordenação usados na segunda classe
Antes de mais nada,
Convenção de código Java: métodos iniciam-se com letras minúsculas (bem como variáveis). Apenas classes iniciam-se com letras maiúsculas (“Constantes” tem todas maiúsculas).
Quanto a String, você quer que “1,2,3,4” se transforme em new int[]{1,2,3,4}, isso?
Primeiramente, pode-se utilizar o split que quebra a String em um vetor de Strings. Depois, use um laço que lê cada item do vetor de Strings, fazendo o parse para int e adicionando no teu vetor de inteiros.
[quote=felipenv]Nao pode ser uma Arrey de inteiros pq o metodo aceita somente o vetor
abraxx e Obrigado[/quote]No caso, Array = vetor.
Só por curiosidade, você chegou a testar o código que você escreveu?
[code]
//criou as variáveis. Até aqui beleza.
int vetor[];
int tam;
int numeros;
//Ok. Obteve o tamanho (mas pra que?)
tam = Integer.parseInt(tf_tamanho.getText());
//Criou um vetor com o tamanho informado. É isso mesmo? Veja mais abaixo porque do questionamento.
vetor = new int[tam];
//Se tiver apenas um número. Deve funcionar, caso contrário, é erro com certeza.
numeros = Integer.parseInt(tf_vetor.getText());
//Você TROCOU o vetor por outro. Logo, porque a inicialização anterior? A sim, passar numeros como variável, aqui, não funciona como você gostaria.
vetor = new int[]{numeros};
MetodosDeOrdenacao m = new MetodosDeOrdenacao();
m.SelectionSort(vetor); [/code]
Tente implementar:
guarde a String obtida do campo;
chame o método split (veja no javadoc o que deve passar para ela) e guarde o vetor de strings retornado.
crie um vetor de inteiros com o tamanho do vetor de strings.
para cada item do vetor de strings, (loop/laço)
faça um parse para inteiro e guarde num item equivalente do vetor de inteiros.
Ao final, terá teu vetor de inteiros populado. Forneça o mesmo a teu MetodoDeOrdenacao.
Não sei se você percebeu, mas estou te forçando a pesquisar como usar o split. Fica relativamente fácil eu colocar o código aqui e você simplesmente copiar. Acabará por ficar dependente
Você removeu algumas coisas do teu código, mas na verdade, o código que você removeu era o que deveria ter ficado
vetor = new int[]{numeros};
não vai funcionar como você deseja. Tenha certeza disso.
Coloque o portugol no teu código (como comentário), codifique cada linha (tente), pesquise um pouco.