Imprimir um Array de Inteiros usando Form

4 respostas
antemmanuel

Estou com uma dúvida, como eu faço para exibir um array de inteiros em um Form. Tentei exibir como StringItem, mas so consegui exibir o endereço de memória do array.
O programa é para rolar uma quantidade de dados, escolhida pelo usuário. Em seguida, a tela mostra um StringItem com a quantidade de dados rolados, a face de cada dado e a soma de todos os resultados. Então eu armazenei cada resultado em um array, porém, eu não sei como exibi-los na tela.

Dados.java
public void rolarDados(int numeroDados){
		dadosArray = new int[numeroDados];
		soma = 0;
		for (indice = 0; indice< numeroDados; indice++){
			face = 1+ randomNumbers.nextInt(10);
			dadosArray[indice] = face; 
			soma += face;
		}
		
	}
	
	public String toString(){
		return ""+ soma;
	}
	
	public int[] getFaces(){
						
		return dadosArray;		
		
	}

Roller.java

public void commandAction(Command c, Displayable d) {
		if (c == this.sair) {
			try {
				this.destroyApp(true);
			} catch (MIDletStateChangeException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			this.notifyDestroyed();
		}

		if (c == this.roll) {
			//System.out.println(qtosDados.getString());
			dado.rolarDados(Integer.parseInt(qtosDados.getString()));
			resultDados.setLabel("Quantidade de Dados: ");
			resultDados.setText(""+qtosDados.getString());
			resultFace.setLabel("Dados Rolados");
			resultFace.setText(""+dado.dadosArray[i]);
			resultTotal.setLabel("Pontuação Total: ");
			resultTotal.setText(""+dado.toString());
			display.setCurrent(resultado);
		}
		if (c == this.voltar){
			display.setCurrent(inicio);
			
		}

	}
Também tentei um laço for, como faria se fosse
System.out.print(""+dado.dadosArray[i]);
so que usando StringItem ou TextField.

Alguém puder da uma força ai.

4 Respostas

malves_info

Cara fiz o seguinte teste e funcionou!

public void rolarDados(int numeroDados){  
		int[] dadosArray = new int[numeroDados];
        Random randomNumbers = new Random();
        int soma = 0;
        int face = 0;
        
         for (int indice = 0; indice < numeroDados; indice++){  
             face = 1+ randomNumbers.nextInt(10);  
             dadosArray[indice] = face;   
             soma += face;  
         }  
         for(int i = 0; i < dadosArray.length; i++){
        	 System.out.println(dadosArray[i]);
         }
     }
antemmanuel

Mas com esse código, o resultado so aparece no console.
Eu quero que apareça no emulador do celular.

Tipo assim, so que nesse caso, so consigo exibir o resultado do último dado:

Mudei o códio do form pra esse:

if (c == this.roll) { //System.out.println(qtosDados.getString()); dado.rolarDados(Integer.parseInt(qtosDados.getString())); resultDados.setText(""+qtosDados.getString()); for(int i=0; i<(Integer.parseInt(qtosDados.getString())); i++){ resultFace.setText(""+dado.dadosArray[i]); //System.out.println(""+dado.dadosArray[i]); } resultTotal.setText(""+dado.toString()); display.setCurrent(resultado); }

malves_info

Amigo você acha que resultFace.setText é incremental? com certeza ele vai quardar o ultimo valor, vc esta setando valores e não incrementando. Tente utilizar List ou ChoiceGroup.

[]'s

antemmanuel

Cara, valeu ae…
Consegui resolver usando StringBuffer.

Obrigado!

Criado 28 de agosto de 2008
Ultima resposta 5 de set. de 2008
Respostas 4
Participantes 2