tirar os dados do array e parra para o LinkedSet e depois imprimir.
Ou gravar ja os dados no LinkedSet.
Bom nao sei qual os pre-requisitos do seu exercicios, se for da faculdade/curso tecnico veja com seu professor… quando estudava na faculdade java o professor nao permitia que fosse usado… quando ele pedia… algo com array… isso por que o assunto na aula era ele por exemplo, mais poderia usar outras formas de implementacao no trabalho… por exemplo…
import java.util.Set;
import java.util.HashSet;
class SetTest{
public static void main(String [] agrs){
Set s = new HashSet();
s.add(42);
s.add(42);
s.add(77);
System.out.println(s);
}}
acredito que a idéia do seu professor seja ver você trabalhando com arrays. Então aqui vão duas idéias que podem te ajudar:
1-Use um array booleano para identificar se o número já foi lido ou não. Semrpe que um número é lido você checa o array. Se estiver marcado como já lido, você não imprime. Caso contrário você marca como lido e imprime. Você vai precisar de um array com 91 posições (de 10 até 100)
2-Em um array armazene os número que você já leu. A cada número você varre o array inteiro e checa se ele já está lá. Se não estiver você imprime e acrescenta ele no array. Caso contrário não faz nada. Você vai precisa de no máximo 20 posições para isso (no caso da entrada possuir apenas números diferentes).
pow… ja tentei implementar d vários jeitos… tentei td ants d recorrer ao fórum!
o professor exige q seja usado array! faço curso técnico de info;
[code]import javax.swing.JOptionPane;
public class Ex5 {
public static void main(String args[]){
boolean duplicata=false;
int x=0;
int n [] = new int [20];
for (int i=0;i<=19;i++){
n[i] = Integer.parseInt(JOptionPane.showInputDialog("n°entre 10 e 100:"));
if (i>=1){
for (x = i;x>0;x--){
if (n[i]!=n[x]){ // se n na posição x for igual n atual
duplicata=false; // duplicata = false
} else { // caso contrário
duplicata=true; // duplicata = true
}
}
}
if (duplicata==false){ // se duplicata = false
JOptionPane.showMessageDialog(null,"N°: "+n[i]); // mostre
}
}
}
}[/code]
tentei assim mas depois da primeira leitura a verificação da duplicata falha…
dsculpem ae qq besteira mas por enquanto é isso ae… ajuda ae kem puder plz!
public class Ex5
{
public static void main(String[] args) {
//Criamos um array que diz o que já foi impresso
boolean jaFoiImpresso[] = new boolean[91];
//Preenchemos ele com false, pois nada foi impresso
Arrays.fill(jaFoiImpresso, false);
for (int i = 0; i < 20; i++) {
//Lemos um número
int valor = Integer.parseInt(JOptionPane.showInputDialog("n°entre 10 e 100:"));
//Se ele ainda não foi impresso
if (!jaFoiImpresso[valor - 10])
System.out.println("Valor: " + valor); //Imprimos
//Marcamos a posição como impressa.
jaFoiImpresso[valor - 10] = true;
}
}
}[/code]
As continhas são pq como o seu número é de 10 a 100, e os arrays do java iniciam em 0, é necessário descontar o número inicial (10) para mapear de um índice até outro.
Assim, se o usuário informou 10, marcamos na posição 0 do array, se informou 11, marcamos na posição 1 e assim por diante…
Sempre que pedir ajuda num exercício aqui no fórum, ponha o que você já fez aqui. Você vai ver que muita gente se sente muito mais disposto a ajudar.
PS: Há uma forma ninja super econômica de se fazer esse exercício, usando apenas 2 posições de um array long e operadores de operações de bit.
eu n tenho q ler os numeros de 10 a 100… o usuário entra com qq valor entre 10 e 100 por 20 vezes…
e eu soh imprimo os q ele ainda n digitou anteriormente…
foi mal ae se eu nao expliquei direito… 1ª vez ae em fórum…
e qual seria essa forma ninja?? O.Ô [ curioso ] kk
Acho que essa é a versão mais econômica possível com o conhecimento que você tem até agora. Note que a primeira que postei foi a primeira sugestão do jonas, e essa é a segunda. Nessa versão, cadastramos os números já encontrados numa lista.
Mas não vou varrer o array inteiro, como ele comentou. Vou varre-lo até encontrar o número, ou uma posição que ainda não tenha um número cadastrado.
Isso poupa algumas comparações, especialmente quando o array está quase vazio.
public class Ex5 {
public static void main(String[] args) {
int jaFoiImpresso[] = new int[19];
Arrays.fill(jaFoiImpresso, 0);
for (int i = 0; i < 20; i++) {
int valor = Integer.parseInt(JOptionPane.showInputDialog("n°entre 10 e 100:"));
//Verifica se o numero está na lista
for (int j = 0; j < 20; j++) {
//Já está na lista? Então não precisamos continuar o loop.
if (jaFoiImpresso[j] == valor)
break;
//Não está? Imprime, adiciona na lista e sai do loop
if (jaFoiImpresso[j] == 0)
{
System.out.println("Valor: " + valor);
if (j != 19)
jaFoiImpresso[j] = valor;
break;
}
//Se chegou aqui é pq outro número está na lista,
//então precisamos continuar procurando
}
}
}
Não são necessárias 20 posições no array, só 19.
Isso porque não precisamos inserir a última caso não seja encontrada, já que o código vai acabar de um jeito ou de outro e, portanto, o último número fornecido nunca vai ser comparado com ninguém.