Resolvido

18 respostas
Unable

Obrigado. Está resolvido

18 Respostas

drigo.angelo

Meu Deus…

Pessoal consegue programar estruturado em Java :frowning:

Unable

drigo.angelo:
Meu Deus…

Pessoal consegue programar estruturado em Java :frowning:

não entendi… pode-me ajudar?

Lucas_Rinaldi

drigo.angelo:
Meu Deus…

Pessoal consegue programar estruturado em Java :frowning:

Isso não é programação estruturada é só programação de iniciante.

@Unable
Assim cara, ou tu usa a classe Arrays que tem muitos métodos estáticos para ajudar na manipulação de arrays, o método que tu necessita é o Arrays.sort.

Ou então tu faz métodos na mão para comparar as Strings com compareTo().

drigo.angelo

Desculpa a indelicadeza,

mas não estamos aqui pra fazer o trabalho para você, e sim pra tirar dúvidas 8)

@Lucas Rinaldi, realmente… depois que fui ver que tava no java básico, quando tava aprendendo também fazia assim :stuck_out_tongue:

Unable
Lucas Rinaldi:
drigo.angelo:
Meu Deus...

Pessoal consegue programar estruturado em Java :(

Isso não é programação estruturada é só programação de iniciante.

@Unable
Assim cara, ou tu usa a classe Arrays que tem muitos métodos estáticos para ajudar na manipulação de arrays, o método que tu necessita é o Arrays.sort.

Ou então tu faz métodos na mão para comparar as Strings com compareTo().

eu meti java básico....
eu sei que não tão para fazer o meu trabalho...
mas eu não sei mesmo como fazer....
já usei o array.sort mas da-me erro

case 7:{
                    Arrays.sort(nomes);


                    }

Exception in thread "main" java.lang.NullPointerException
at java.util.ComparableTimSort.countRunAndMakeAscending(ComparableTimSort.java:291)
at java.util.ComparableTimSort.sort(ComparableTimSort.java:157)
at java.util.ComparableTimSort.sort(ComparableTimSort.java:146)
at java.util.Arrays.sort(Arrays.java:466)

eu so tenho java à 2 meses precisava mesmo de uma ajuda

Unable

drigo.angelo:
Desculpa a indelicadeza,

mas não estamos aqui pra fazer o trabalho para você, e sim pra tirar dúvidas 8)

@Lucas Rinaldi, realmente… depois que fui ver que tava no java básico, quando tava aprendendo também fazia assim :P

drigo eu não quero que você me faça trabalho… só quero que me ajude com o erro que tou tendo

drigo.angelo

OK, começando, o padrão Java é nomes de variáveis começarem com letras minúsculas… quando você coloca, por exemplo

int premio=250, Opção, inscritos=-1,Quem;

Você acaba confundindo quem olha seu código…

então vamos começar pensando no problema:

7 - Ordenar uma lista pelos nomes
8 - Ordenar uma lista pelo número de prêmios

Uma forma bem fácil de ordenar os elementos é utilizando o método compareTo e trocando os elementos fora da ordem de posição…
(esse código que seu professor te passou parece bom)

só não entendi como esses arrays (nome, idade, premio, etc) estão relacionados

Lucas_Rinaldi

@Unable

Desculpa mas eu não tinha me tocado que pro Arrays.sort funcionar é necessário que o array todo esteja cheio, porque chega uma hora que ele vai tentar comparar Strings null, o que dai lança NullPointerException.

Acho que a única solução é fazer mesmo no braço os métodos de ordenação, ou mexer com coleções mas ai já é uma área mais avançada pra quem só tem dois meses de java.

Não tenho mais nenhuma idéia pra te ajudar, se surgir alguma venho aqui te falar.

Abraços

Unable

Lucas Rinaldi:
@Unable

Desculpa mas eu não tinha me tocado que pro Arrays.sort funcionar é necessário que o array todo esteja cheio, porque chega uma hora que ele vai tentar comparar Strings null, o que dai lança NullPointerException.

Acho que a única solução é fazer mesmo no braço os métodos de ordenação, ou mexer com coleções mas ai já é uma área mais avançada pra quem só tem dois meses de java.

Não tenho mais nenhuma idéia pra te ajudar, se surgir alguma venho aqui te falar.

Abraços

for (i=1;i<=N-1, i++){ for (J=i+1; j<=N; J++){ if (v[i]>v[j]){ //trocar elementos aux=v[i]; v[i]=v[j]; v[j]=aux;

Eu penso que qualquer coisa desse genero resolve so não tou a ver bem o que porque nao entendo muito de java…
Não vês nenhuma solução por esse código?

Ele verifica o valor dos elementos…
Compra o 1º com o 2º
se o segundo for maior passa a tomar o primeiro lugar caso contrario compara com o 3º

exemplo

9;5;2;3…

1º passo -> comparar o 9 com o 5 (5 é mais pequeno) logo -> 5;9;2;3
2º passo -> comparar o 5 com o 2 (2 é mais pequeno) logo -> 2;5;9;3
3º passo -> comparar o 2 com o 3 (2 é mais pequeno) logo -> 2;5;9;3

4º passo -> comparar o 5 com o 9 (5 é mais pequeno) logo -> 2;5;9;3
5º passo -> comparar o 5 com o 3 (3 é mais pequeno) logo -> 2;3;9;5

6º passo -> comparar o 9 com o 5 (5 é mais pequeno) logo -> 2;3;5;9

é algo desse género…
não dá?

Obrigado pela paciência desde ja

Unable

drigo.angelo:
OK, começando, o padrão Java é nomes de variáveis começarem com letras minúsculas… quando você coloca, por exemplo

int premio=250, Opção, inscritos=-1,Quem;

Você acaba confundindo quem olha seu código…

então vamos começar pensando no problema:

7 - Ordenar uma lista pelos nomes
8 - Ordenar uma lista pelo número de prêmios

Uma forma bem fácil de ordenar os elementos é utilizando o método compareTo e trocando os elementos fora da ordem de posição…
(esse código que seu professor te passou parece bom)

só não entendi como esses arrays (nome, idade, premio, etc) estão relacionados

Muito obrigado desde já…
de facto o código parece bom mas eu não consigo por funcional…

O que o programa faz é pedir uma ficha de jogador com nome e idade
é feito um sorteio conforme os inscritos…
Depois tenho de dizer quem ganhou mais prémios etc…

Para isso é preciso o comando para comparar e eu não sei utilizar… não tou a entender

InSeOfKn

esse código que o teu professor te passou é um método de ordenação mais conhecido como o método da bolha ele funciona como o Unable falou

vou mostrar um exemplo ordenando 2 vetores cuja a relação entre eles é os índices (que acredito ser seu casso)

String[] nomeProduto[] = new String[10];
int[] quatidade[] = new int[10];

for (i=1;i<=10-1, i++){  
    for (j=i+1; j<=10-1; j++){  
        if (nomeProduto[j].compareTo(nomeProduto[j+1])<0){  //foi usado compareTo por ser uma String
            //trocar elementos do vetor nomeProduto 
            String aux1=nomeProduto[j+1];  
            nomeProduto[j]=nomeProduto[j+1];  
            nomeProduto[j]=aux1; 
          
           //trocar elementos do vetor quatidade
            int aux2=quatidade[j+1];  
            quatidade[i]=quatidade[j+1];  
            quatidade[j]=aux2 
        }
    }
}
Obs: não foi testado

adapta esse exemplo a tua situação

até!

edit: coisa triste 3 vez que edito porque ta erado o código que escrevi

Unable
InSeOfKn:
esse código que o teu professor te passou é um método de ordenação mais conhecido como o método da bolha ele funciona como o Unable falou

vou mostrar um exemplo ordenando 2 vetores cuja a relação entre eles é os índices (que acredito ser seu casso)

String[] nomeProduto[] = new String[10];
int[] quatidade[] = new int[10];

for (i=1;i<=10-1, i++){  
    for (j=i+1; j<=10-1; j++){  
        if (nomeProduto[i].compareTo(nomeProduto[j])<0){  //foi usado compareTo por ser uma String
            //trocar elementos do vetor nomeProduto 
            aux=nomeProduto[i];  
            nomeProduto[i]=nomeProduto[j];  
            nomeProduto[j]=aux1; 
          
           //trocar elementos do vetor quatidade
            aux=quatidade[i];  
            quatidade[i]=quatidade[j];  
            quatidade[j]=aux1 
        }
    }
}
Obs: não foi testado

adapta esse exemplo a tua situação

até!

era exactamente isso que queria obrigado...

só tá a dar erro

aux = nomes[i];
Required int found java.lang.String
nomes[j] = aux1;
Required java.lang.String found int

Só faltam esses promenores

InSeOfKn

ops digitei algumas coisa eradas vou modificar no post acima

Unable

não entendi… assim?

aux = nomes; nomes[i] = nomes[j]; nomes[j] = aux;

dá erro a mesma

InSeOfKn

o código foi modificado no meu primeiro post desse tópico olhe la!

Unable

Acabei por usar o seguinte código

case 7:{ System.out.println("Listagem ordenada por nomes (crescente)\n\n"); for (i=1; i<=inscritos; i++){ for (j=0; j<=inscritos-i; j++){ if (nomes[j].compareTo(nomes[j+1])>0){ aux = nomes[j]; nomes[j] = nomes[j+1]; nomes[j+1] = aux; } } } for(int y=0; y <= inscritos;y++){ System.out.print(nomes[y] + "\n"); } }

O problema é se eu quiser listar os nomes e as idades certas…

por exemplo

se meu meter os seguintes dados

João 19 anos
Carlos 20 anos
Teresa 18 anos
Ana 21 anos
Manuel 22 anos

ao colocar a linha System.out.print(nomes[y] + " de " + +idades[y]);
fico com

ana de 19
carlos de 20
joao de 18
manuel de 21
teresa de 22

as idades nao correspondem aos nomes mas sim à ordem que eu coloquei

Unable

sem progressos ainda!

InSeOfKn

ordenou né? mas só os nomes porque você ta só trocando as posições do vetor nome para trocar tos outros vetores tem repetir essa parte do código para todos os vetores

aux1 = nomes[j];  
    nomes[j] = nomes[j+1];  
    nomes[j+1] = aux1;

    aux2 = somaPremios[j];  
    nomes[j] = somaPremios[j+1];  
    nomes[j+1] = aux2;
    
    aux3 = idades[j]...
    
    // e assim para todos os vetores senão quebra a integridade dos vetores

até

Criado 10 de janeiro de 2011
Ultima resposta 10 de jan. de 2011
Respostas 18
Participantes 4