Galera, fiz um topico alguns dias atras com uma duvida sobre esse trabalho da faculdade que estou fazendo, para implementar o Selection Sort, dúvida essa que já foi tirada, mas com o decorrer do trabalho eu tive que melhorar o código, por exemplo, no método arrayUsuario(), ao invés de perguntar se o usuario deseja inserir outro elemento, eu tive a ideia de que ele digitasse uma String em que os numeros seriam separados pelo espaço, por exemplo
1 2 3 4 5 6
daí colocar essa string em um array do tipo string, para depois colocá-lo em um array do tipo int e depois colocá-lo num array do tipo Item, que é o array que preciso retornar, consegui fazer os dois passos tranquilamente, mas o terceiro está me tirando o sono
Item.java
public interface Item {
public int compara(Item i);
public void alteraChave(Object chave);
public Object recuperaChave();
}
MeuItem.java
public class MeuItem implements Item {
private int chave;
public MeuItem(int chave){
this.chave = chave;
}
public int compara(Item it){
MeuItem item = (MeuItem) it;
if(this.chave < item.chave)
return -1;
else if (this.chave > item.chave)
return 1;
return 0;
}
public void alteraChave(Object chave){
Integer ch = (Integer) chave;
this.chave = ch.intValue();
}
public Object recuperaChave(){
return new Integer(this.chave);
}
@Override
public String toString(){
return chave + "";
}
}
Ordenacao.java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
public class Ordenacao {
private static Scanner scanner;
public static void selecao(Item v[], int n){
for (int i=0; i<n; i++){
int min=i;
for (int j=i+1; j<n; j++)
if (v[j].compara(v[min]) < 0)
min = j;
Item x = v[min];
v[min] = v[i];
v[i] = x;
}
}
public static Item[] arrayUsuario(){
ArrayList<Item> copia = new ArrayList<Item>();
int opcao=0;
scanner = new Scanner(System.in);
while (opcao==0){
System.out.println("Digite o valor que deseja inserir");
int n = scanner.nextInt();
copia.add(new MeuItem(n));
System.out.println("Deseja inserir outro numero? (Digite 0 se sim e 1 se nao)");
opcao = scanner.nextInt();
}
Item[] usuario = copia.toArray(new Item[copia.size()]);
return usuario;
}
public static void testeCopia(){
String st = "1 2 3 4 5";
String[] result = st.split("\\s");
int[] copia1 = new int[result.length];
for(int i=0;i<result.length;i++)
copia1[i] = Integer.parseInt(result[i]);
}
}
Pois bem, a testeCopia() é a minha função de teste pra isso que estou tentando fazer, como podem ver criei dois arrays, um do tipo String, pra armazenar a String que é lida, e um do tipo int para que os valores fiquem do tipo int. O próximo passo seria criar um vetor do tipo Item e pegar os valores do vetor copia1 para um futuro vetor Item, mas não faço ideia de como :{
Alguém tem alguma ideia?
Aguardo resposta

