Fala galera, é meu primeiro post aqui e to meio que aprendendo java sozinho mesmo.
Pois bem, decidi aprender java, porque alguns professores da faculdade indicaram que fizessemos os trabalhos na linguagem, e sempre tive vontade de aprender mesmo.
Um dos trabalhos é de Ordenação de dados, que ele pede para que implementemos alguns algoritmos de Ordenação, da maneira que o professor passa.
Aqui minha dúvida, ja consegui fazer o mais difícil só olhando por outras dúvidas aqui do fórum xD
eu tenho essas quatro classes
Todo o exemplo, exceto a parte do criaArrayList(), é do livro do Ziviane, Projetos de algoritmocs com implementações em java e c++
Item.java
public interface Item {
public int compara(Item i);
public void alteraChave(Object chave);
public Object recuperaChave();
}
MeuItem.java(O uso da classe MeuItem, por enquanto esta sendo pouco necessario, sei que vou precisar dela no futuro.)
//import java.io.*;
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);
}
}
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=1; i<=n-1; 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 Integer[] criaArrayList() {
ArrayList<Integer> copia = new ArrayList<Integer>();
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(n);
System.out.println("Deseja inserir outro numero? (Digite 0 se sim e 1 se nao)");
opcao = scanner.nextInt();
}
Integer[] selection = copia.toArray(new Integer[copia.size()]); //transforma o arraylist em vetor
int tam = copia.size();
System.out.println(Arrays.toString(selection));
System.out.println(tam);
return selection;
}
}
Principal.java
public class Principal {
public static void main(String[] args){
Ordenacao.criaArrayList();
}
}
Daí o meu problema, é que no método Selecao, ele passa por parametro um vetor do tipo Item e um inteiro n (que seria o tamanho do vetor)
Consegui fazer com que eu tenha um vetor de tamanho dinâmico, em que eu vou digitando os numeros, armazenando num ArrayList e depois copiando ele para um Array de inteiros. Minha dúvida é, como faço para o método criaArrayList() retorne um vetor do Item? Já tentei colocar trocar todos os Integer do método, por Item, mas o copia.add(n) dá um erro
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method add(int, Item) in the type ArrayList<Item> is not applicable for the arguments (int)
at Ordenacao.criaArrayList(Ordenacao.java:28)
at Principal.main(Principal.java:4)
Alguém tem alguma solução? Existe alguma outra forma de transformar o vetor retornado em um do tipo Item?
Aguardo resposta galera