O que tem de errado com o programa?

13 respostas
raisabc

Preciso que a resposta final( os nomes ordenados em ordem alfabética) apareçam com o JOptionPane mas só que digito JOptionPane.showInputDialog no lugar de Sstem.out.println e não dá certo!
e o (nome[n]) era pra ser (nome[i]), mas se coloco i, dá erro do mesmo jeito!

O que faço? :roll:

import javax.swing.*;
import java.util.Arrays;

public class OrdenaNomes

{

public static void main( String args[] )

{

int n = Integer.parseInt(JOptionPane.showInputDialog(null, DIGITE A QUANTIDADE DE NOMES:,Entrada,3 )); 	

String[] nome = new String[n];
for(int i=0; i<nome.length; i++) 
     {
        nome[i] = JOptionPane.showInputDialog(null,"Digite "+(i+1)+"º Texto: ","Ordenação das Palavras", 3).trim();
     }
	 
     
     Arrays.sort(nome); 
         	
     for(int i=0; i><nome.length; i++);
     
     {
        [b]System.out.println(nome[n]);[/b]
     }
      
 }

}>

13 Respostas

saoj

Qual o erro que dá?

Dica: use as tags code para formatar o seu código [ code ]

J

se vc colocar o array.sort(nome) antes do for do JOPtionPane ai vai funcionar

raisabc

saoj:
Qual o erro que dá?

Dica: use as tags code para formatar o seu código [ code ]

SE EU COLOCO System.out.println(nome[n]); o programa compila mas na hora de rodar e aparecer a mensagem final sai do JOptionPane e ao invés de aparecer o resultado com o JOptionPane, volta pra tela preta e aparece escrito assim " Exception is thread “main” java.lan.ArrayIndexOutOfBoundsException: 2 at OrdenaNomes.main<OrdenaNomes.java:23>

SE EU COLOCO System.out.println(nome[i]); o programa não compila e aparece erro nesta linha dizendo: cannot find symbol variable i

e agora?

raisabc

tirei o Array.sort(nome) do lugar q ele tá e coloquei antes do primeiro for.

O programa compilou mas na hora de executar apareceu várias coisas escritas na tela preta e saiu!

jzf

Oi Raisa,

fiz algumas mudanças no código e rodou normalmente, ou seja, imprimiu todos os nomes digitados de forma ordenada.

import javax.swing.*;
import java.util.Arrays;

public class OrdenaNomes {
	public static void main(String args[]) {
		int n = Integer.parseInt(JOptionPane.showInputDialog(null,
				"DIGITE A QUANTIDADE DE NOMES:", "Entrada", 3));
		String[] nome = new String[n];

		for (int i = 0; i < n; i++) {
			nome[i] = JOptionPane.showInputDialog(null,
					"Digite " + (i + 1) + "º Texto: ",
					"Ordenação das Palavras", 3).trim();
		}

		Arrays.sort(nome);

		for (int i = 0; i < n; i++){
			System.out.println(nome[i]);
		}
	}
}

ajudou?

raisabc

jzf:
Oi Raisa,

fiz algumas mudanças no código e rodou normalmente, ou seja, imprimiu todos os nomes digitados de forma ordenada.

import javax.swing.*;
import java.util.Arrays;

public class OrdenaNomes {
	public static void main(String args[]) {
		int n = Integer.parseInt(JOptionPane.showInputDialog(null,
				"DIGITE A QUANTIDADE DE NOMES:", "Entrada", 3));
		String[] nome = new String[n];

		for (int i = 0; i < n; i++) {
			nome[i] = JOptionPane.showInputDialog(null,
					"Digite " + (i + 1) + "º Texto: ",
					"Ordenação das Palavras", 3).trim();
		}

		Arrays.sort(nome);

		for (int i = 0; i < n; i++){
			System.out.println(nome[i]);
		}
	}
}

ajudou?

ele roda normalmente, mas no final do programa na hora de exibir a lista dos nomes ordenados está aparecendo na tela preta e não na tela do JOptionPane. isso que não estou conseguindo fazer!

jzf

Deixa ver se entendi, você preenche o vetor de nomes corretamente com o JOptionInputPane, certo? O que você quer é que a exibição dos dados inseridos seja dentro de um JOptionPane também, é isso?

Skull_Drummer

Já tentou usar o JOptionPane.showMessage(); com o nome informado no parâmetro?

jzf

Pelo que entendi é isso que você quer…

import javax.swing.*;
import java.util.Arrays;

public class OrdenaNomes {
	public static void main(String args[]) {
		int n = Integer.parseInt(JOptionPane.showInputDialog(null,
				"DIGITE A QUANTIDADE DE NOMES:", "Entrada", 3));
		String[] nome = new String[n];

		for (int i = 0; i < n; i++) {
			nome[i] = JOptionPane.showInputDialog(null,
					"Digite " + (i + 1) + "º Texto: ",
					"Ordenação das Palavras", 3).trim();
		}

		Arrays.sort(nome);

		for (int i = 0; i < n; i++){
			JOptionPane.showMessageDialog(null, nome[i]);
		}
	}
}
raisabc
jzf:
Pelo que entendi é isso que você quer...
import javax.swing.*;
import java.util.Arrays;

public class OrdenaNomes {
	public static void main(String args[]) {
		int n = Integer.parseInt(JOptionPane.showInputDialog(null,
				"DIGITE A QUANTIDADE DE NOMES:", "Entrada", 3));
		String[] nome = new String[n];

		for (int i = 0; i < n; i++) {
			nome[i] = JOptionPane.showInputDialog(null,
					"Digite " + (i + 1) + "º Texto: ",
					"Ordenação das Palavras", 3).trim();
		}

		Arrays.sort(nome);

		for (int i = 0; i < n; i++){
			JOptionPane.showMessageDialog(null, nome[i]);
		}
	}
}

exatamenteeeee!!! mas só q eu quero q todos os nomes apareçam numa lista e não um por um.

jzf

Bom então em vez fazer o código vou dizer o que fazer, ok?

for (int i = 0; i < n; i++){  
             JOptionPane.showMessageDialog(null, nome[i]);  
         }

Você tira esse JOptionPane.showMessageDialog do loop. Faz uma variavel string receber os nomes concatenando algo como String+= nome[i]+"\n" e depois manda essa string ser escrita no JOptionPane.showMessageDialog(null, stringfinal);

ok?

G

você tem de colocar em uma string o vetor inteiro.

tenta fazer o segunite

String lista="Os nomes são:\n";

for(int i = 0; i < n; i++){
String =+nome[i]+"\n";

}
JOptionPane.showMessageDialog(null, lista);
apaga a minha mensagem moderador, responderam ao mesmo tempo
raisabc

jzf:
Bom então em vez fazer o código vou dizer o que fazer, ok?

for (int i = 0; i < n; i++){  
             JOptionPane.showMessageDialog(null, nome[i]);  
         }

Você tira esse JOptionPane.showMessageDialog do loop. Faz uma variavel string receber os nomes concatenando algo como String+= nome[i]+"\n" e depois manda essa string ser escrita no JOptionPane.showMessageDialog(null, stringfinal);

ok?

Ok! Entendii!! MUITOO OBRIGAAADAA!!

Criado 17 de outubro de 2008
Ultima resposta 17 de out. de 2008
Respostas 13
Participantes 6