Exibir Strings amazenadas em um array?

5 respostas Resolvido
java
jairodione

Olá Pessoal!

Gostaria de exibir as 04 (quatro) primeiras, e as 04 (quatro) segundas letras armazenadas em um array de 10 posições. Consegui armazenar, mas não consigo exibir de 04 em 04. Meu algoritmo esta descrito abaixo:

static void lerVetor(){
        String letra;
        String lista = "";
        //int cont = 0;
       for(int i = 0;i < 10;i++){
           letra = JOptionPane.showInputDialog("Digite uma letra:");
            //cont++;
            lista += letra + "\n";
       }
        JOptionPane.showMessageDialog(null, lista);
        
    }

    public static void main(String args[]){
        lerVetor();
    }

5 Respostas

Dragoon

DEMO

import java.util.*;
import java.lang.*;
import java.io.*;

class Ideone
{
	public static void main (String[] args) throws java.lang.Exception
	{
		String letras = "abcdefghij";
		
		System.out.println(letras.substring(0,4));
		System.out.println(letras.substring(4,8));
	}
}

DEMO

jairodione

Olá Dragoon!

Mais eu não desejo fazer isto em um método principal, mas sim criar um procedimento ou função que pegue o array gravado na memória (neste caso o procedimento lerVetor), e faça a exibição das quatro primeiras e depois das quatro segundas letras gravadas no array.

Acho que da forma que você exemplificou eu poderia fazer direto no procedimento lerVetor(), não fiz este teste porque desejo realmente é fazer como expliquei no paragrafo acima.

Dragoon

@jairodione o que eu te passei foi um exemplo, e isso claro que pode ser melhorado, aonde você vai implementar já é uma visão sua, a minha foi passar para você o código resumido para melhor entendimento.

Veja, como você vai resolver seu problema é uma escolha sua. A nossa aqui é ajudar você entender a duvida!

rafaelarbl
Solucao aceita

Se eu entendi direito então tu está falando de um array de strings, onde na primeira posição eu poderia ter “asidjasidkasmsa” e na segunda “asidjaidiasjdao” e tu quer exibir as 4 primeiras letras e as 4 segundas letras de todas as 10 posições. Certo?

Se for o caso, o jeito que tu declarou o teu “array” tá bem complicada. (Se o teu array for “lista”, né.)

Porque? Bom… Porque “lista” é uma string… que vai jogar sequencialmente todos os caracteres e não vai distinguir quais/quantos foram colocados da primeira vez ou da segunda ou assim por diante.

Como (eu) resolvi essa desorganização e arrumei as posições:

String[] lista = {"0","1","2","3","4","5","6","7","8","9"};
//declarei e instanciei um VETOR de strings (e não "uma string só") com 10 posições.

Outra coisa, se tu vai ter um método para colocar valores, outro para fazer a busca, outro para calcular qualquer coisa (sei lá) e etc, a declaração do teu vetor não pode ficar dentro de lerVetor(), tem que ficar global e ser estática, para poder ser vista e alterada por todos os métodos.

Tá, ok. transformei tua string num vetor. E agora, como tu vai jogar o que a pessoa escreveu no JOptionPane para dentro desse vetor? Não dá mais para usar lista += letra + "\n";.
Assim:
lista[i] = letra;

Pronto, resolvido. Agora ele está colocando cada string em uma posição. Legal, agora ficou fácil. Usa o método que o cara ali de cima colocou e tá pronto:

letras.substring(0,4);
letras.substring(4,8);

Acabei me enganando e fazendo das primeiras e ultimas letras. Agora to com preguiça de desfazer então vou te mostrar assim mesmo. Meu método ficou assim:

static void exibeletras() {
	String primeiras;
	String ultimas;
	for(int i = 0; i<lista.length; i++) {
		try {
		     primeiras = ("["+i+"] = " + (lista[i].substring(0, 4)) + "\n");
		     ultimas = "["+i+"] = " + lista[i].substring((lista[i].length()-4), lista[i].length()) + "\n";
		     JOptionPane.showMessageDialog(null, "4 primeiras: "+primeiras +"\n 4 ultimas: "+ ultimas);
		} catch (StringIndexOutOfBoundsException e) {
			System.out.println("");
			// 4 posições ou (tamanho-4) posições podem ser valores inválidos no teu array se a tua string for pequena demais...
		}
	}
}
jairodione

Obrigado rafaelarbl!

Era isto mesmo, agora a lista eu fiz foi somente para exibir todas as letras digitadas em um único JOptionpane.
Valeu mesmo!!!

Criado 21 de julho de 2016
Ultima resposta 25 de jul. de 2016
Respostas 5
Participantes 3