[RESOLVIDO]Vetor

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