Alguém pode me ajudar com esse código??
Esse é a maneira como eu tentei fazer, não sei se está correto!
import java.util.Arrays;
import java.util.Scanner;
public class Ex1 {
public static void main(String[] args) {
String []nome = new String[15];
int w = 0;
Scanner s = new Scanner(System.in);
System.out.println("Digite 15 nomes para ordenação em ordem alfabética");
System.out.println("Digite 0 (zero) e pressone 'ENTER'a qualquer momento para ordenar menos que 15 nomes");
for(w=0; w <= nome.length; w++ ){
System.out.printf("Digite o %dº nome: ", w+1);
nome[w] = s.nextLine();
if (nome[w].equalsIgnoreCase("0")){
w = 15;
}
}
Arrays.sort(nome); // Ordena em ordem crescente
for( w=0;w<=nome.length-1;w++ ){
System.out.printf("%dº Nome: %S\n", w+1, nome[w]);
}
}
}
Desde já agradeço
Sim, mas você você não falou ainda qual é a sua dúvida?
Porque assim fica um pouco complicado de entendê-la.
[quote=WendersonLP]Sim, mas você você não falou ainda qual é a sua dúvida?
Porque assim fica um pouco complicado de entendê-la.[/quote]
Então, até pegar os nomes e ordenar está beleza…
O problema é se o usuário quiser digitar menos que 15 nomes…
Ai o problemas diz que eu devo encerrar o programa quando o usuario digitar 0 (zero)
Mas isso não consigo fazer…
Pelo fato de ser String e ter que comparar com 0… sei lah…
Deu pra entender melhor??
esclareça meslhor sua duvida, ams de cara vc pode fazer assim.
Retirar
if (nome[w].equalsIgnoreCase("0")){
w = 15;
}
e colocar
if (nome[w].equalsIgnoreCase("0")){
break; //isso vai sair do laço assim que for 0 ;)
}
[quote=abelgomes]esclareça meslhor sua duvida, ams de cara vc pode fazer assim.
Retirar
if (nome[w].equalsIgnoreCase("0")){
w = 15;
}
e colocar
if (nome[w].equalsIgnoreCase("0")){
break; //isso vai sair do laço assim que for 0 ;)
}
[/quote]
Sair da estrutura ele sai, mas não corretamente… Olha o que acontece:
run:
Digite 15 nomes para ordenação em ordem alfabética
Digite 0 (zero) e pressone 'ENTER’a qualquer momento para ordenar menos que 15 nomes
Digite o 1º nome: antonio
Digite o 2º nome: maria
Digite o 3º nome: ana
Digite o 4º nome: 0
Exception in thread “main” java.lang.NullPointerException
at java.lang.String.compareTo(String.java:1167)
at java.lang.String.compareTo(String.java:92)
at java.util.Arrays.mergeSort(Arrays.java:1144)
at java.util.Arrays.mergeSort(Arrays.java:1156)
at java.util.Arrays.mergeSort(Arrays.java:1155)
at java.util.Arrays.sort(Arrays.java:1079)
at Ex1.main(Ex1.java:25)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 15 segundos)
Acho que não posso fazer essa comparação de String com EQUALS…
=’[
coloca aquele if com o break antes de atribuir o valor nome[w] = s.nextLine();
e atribuir o valor digitado a uma variavel pra ficar melhor de v c entender…
e na linha que vc varre o vetor pra imprimir…coloque somente até onde o vetor esta preenchido.
Ou seja, pergunte se o vetor[w] é null…ou entao faça um for assim
for(String str: vetor){
//imprime o nome....
}
aconselho vc a perguntar se o vetor[w] é null…se sim break;
fica melhor pra vc entender…depois faz usando o foreach…
[quote=abelgomes]coloca aquele if com o break antes de atribuir o valor nome[w] = s.nextLine();
e atribuir o valor digitado a uma variavel pra ficar melhor de v c entender…
e na linha que vc varre o vetor pra imprimir…coloque somente até onde o vetor esta preenchido.
Ou seja, pergunte se o vetor[w] é null…ou entao faça um for assim
for(String str: vetor){
//imprime o nome....
}
aconselho vc a perguntar se o vetor[w] é null…se sim break;
fica melhor pra vc entender…depois faz usando o foreach…[/quote]
Saquei, o único problema é que o exercício obriga a ser daquele jeito finalizando quando digitado 0…
Então o desafio é pegar a String do Vetor, no caso nome[w] e comparar com zero…
Sendo que não pode ser: If ( nome[w] == “0”), pois é uma String e comparações assim nao funcionam com String…
E acabei de ler um tópico onde diz que quando é Vetor o comando Equals não funciona…
…
claro que funciona o equals…
olha só…
package guj;
import java.util.Arrays;
import java.util.Scanner;
public class Ex1 {
public static void main(String[] args) {
String[] nome = new String[15];
int w = 0;
Scanner s = new Scanner(System.in);
System.out
.println("Digite 15 nomes para ordenação em ordem alfabética");
System.out
.println("Digite 0 (zero) e pressone 'ENTER'a qualquer momento para ordenar menos que 15 nomes");
for (w = 0; w < nome.length; w++) {
System.out.printf("Digite o %dº nome: ", w + 1);
String str = s.nextLine();
if (str.equalsIgnoreCase("0")) {
break;
}
nome[w] = str;
}
for (int i = 0; i < nome.length; i++) {
if(nome[i]==null)
nome[i]="";
}
Arrays.sort(nome); // Ordena em ordem crescente
for (String srt : nome) {
System.out.println(srt);
}
}
}
ve ai se consegue entender…nao sou de fazr isso cara…só fiz pq tow de saida e nao queria lhe deixar na mao…o nullpointer estava dando pq o restante das posiçoes era null e na hora do sort dava zica…ai eu coloquei “” e funfou…outra coisa é a respeito do indice…se vai começar de 0 nao usa <= use somente <
flw vou nessa…
[quote=abelgomes]claro que funciona o equals…
olha só…
package guj;
import java.util.Arrays;
import java.util.Scanner;
public class Ex1 {
public static void main(String[] args) {
String[] nome = new String[15];
int w = 0;
Scanner s = new Scanner(System.in);
System.out
.println("Digite 15 nomes para ordenação em ordem alfabética");
System.out
.println("Digite 0 (zero) e pressone 'ENTER'a qualquer momento para ordenar menos que 15 nomes");
for (w = 0; w < nome.length; w++) {
System.out.printf("Digite o %dº nome: ", w + 1);
String str = s.nextLine();
if (str.equalsIgnoreCase("0")) {
break;
}
nome[w] = str;
}
for (int i = 0; i < nome.length; i++) {
if(nome[i]==null)
nome[i]="";
}
Arrays.sort(nome); // Ordena em ordem crescente
for (String srt : nome) {
System.out.println(srt);
}
}
}
ve ai se consegue entender…nao sou de fazr isso cara…só fiz pq tow de saida e nao queria lhe deixar na mao…o nullpointer estava dando pq o restante das posiçoes era null e na hora do sort dava zica…ai eu coloquei “” e funfou…outra coisa é a respeito do indice…se vai começar de 0 nao usa <= use somente <
flw vou nessa…
[/quote]
Funcionou mesmo, Valeu pela ajuda e pela Dica!!! =]]]
Um Abraço