Armazenar informação de um TextField em variaveis diferentes

7 respostas Resolvido
G

Salve galera!

Estou tentando descobrir como armazenar uma informação digitada dentro deum TextField em variaveis diferentes, por exemplo eu digito dentro do JTextField : “123”, e depois armazeno essa informação da seguinte forma :

int num1 = 1
int num2 = 2
int num3 = 3

como posso separar os números que foram digitados no TextField e armazena-los separadamente?

7 Respostas

staroski

Um método pra extrair os dígitos de um número:

public static byte[] extrairDigitos(long numero) {
    if (numero < 0) {
        throw new IllegalArgumentException("numero não pode ser negativo");
    }
    if (numero < 10) {
        return new byte[] { (byte) numero };
    }
    byte[] digitos = new byte[(int) Math.log10(numero) + 1];
    for (int i = digitos.length - 1; i >= 0; i--) {
        digitos[i] = (byte) (numero % 10);
        numero /= 10;
    }
    return digitos;
}

Exemplo de uso:

int numeroDigitado = Integer.parseInt(meuObjetoTextField.getText());
byte[] digitos = extrairDigitos(numeroDigitado);
int digito1 = digitos[0];
int digito2 = digitos[1];
int digito3 = digitos[2];
G

obrigado pela ajuda staroski, mas nao compreendi o método usado, sou iniciante em java poderia explicar melhor ou tem algum outro método.

staroski

O que você não compreendeu?

Posta o código de sua tela que fica fácil te mostrar como incluir o código acima.

G

Fiz dessa forma, acredito que consegui armazenar os números em variaveis diferentes, se voce puder me confirmar se está certo.

outro porém agora é que a ação de armazenar ocorre no JButton “OK”, e agora preciso que no JButton “Exibir” a ação dele insira visualmente os valores das variaveis nos outros JTextField.

package com.ap;

import java.awt.Color;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JTextField;
public class MediaNum extends JFrame {

private JTextField numeros;
private JTextField txtMaior;
private JTextField txtMenor;
private JTextField txtMedia;

int valor;
int unidade;
int dezena;
int centena;


	
public MediaNum() {
	
	
	
	setTitle("MediaNum");
	setDefaultCloseOperation(EXIT_ON_CLOSE);
	setSize(600,400);
	setResizable(false);
	
	
	JPanel p = new JPanel();
	p.setBackground(Color.white);
	p.setLayout(null);
	
	
	JLabel digit = new JLabel("Digite o numero: ");
	digit.setBounds(20, 20, 120, 20);
	
	numeros = new JTextField();
	numeros.setBounds(20, 40, 200, 30);
	
	
	
	
	JButton OK = new JButton("OK");
	OK.setBounds(225, 40, 140, 30);
	
	
	JButton Exibir = new JButton("Exibir");
	Exibir.setBounds(405, 180, 140, 30);
	
	JLabel Maior = new JLabel("Maior >>> ");
	Maior.setBounds(60,100, 80, 80);
	txtMaior = new JTextField();
	txtMaior.setBounds(200, 125, 200, 30);
	
	JLabel Menor = new JLabel("Menor >>> ");
	Menor.setBounds(60,140, 100, 100);
	txtMenor = new JTextField();
	txtMenor.setBounds(200, 180, 200, 30);
	
	
	JLabel Media = new JLabel("Media >>> ");
	Media.setBounds(60,200, 100, 100);
	txtMedia = new JTextField();
	txtMedia.setBounds(200, 230, 200, 30);

	 
	
	
	
	OK.addActionListener(
			
			new ActionListener() {

				@Override
				public void actionPerformed(ActionEvent e) {
					
				
					int valor = Integer.parseInt(numeros.getText());
				
					int unidade = (valor/1) % 10;
					int dezena = (valor/10) % 10;
					int centena = (valor/100) % 10;
				
					
				}
				
			}
				
				
				
				
			
			
			);
	

	Exibir.addActionListener(
			
			new ActionListener() {

				@Override
				public void actionPerformed(ActionEvent e) {
					
					txtMaior = new JTextField(unidade);
					
				}
				
				
			}
			
			);
	
	
	
	p.add(digit);
	p.add(numeros);
	p.add(OK);
	p.add(Exibir);
	
	p.add(Maior);
	p.add(txtMaior);
	
	p.add(Menor);
	p.add(txtMenor);
	
	p.add(Media);
	p.add(txtMedia);
	add(p);
	
	
	
}




}
H

sua variavél “unidade” está é criando a quantidade de colunas que vai ter o JTextField, pois você está usando no construtor. Outra coisa é que para passar um int para String só é possivel por funções que fazem essa conversão. Ficaria no seu caso +ou- assim

txtMaior = new JTextField();
txtMaior.setText(String.valueOf(unidade));
staroski
Solucao aceita
import java.awt.Color;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class MediaNum extends JFrame {

    private JTextField txtNumeros;
    private JTextField txtMaior;
    private JTextField txtMenor;
    private JTextField txtMedia;

    private int unidade;
    private int dezena;
    private int centena;

    public MediaNum() {

        setTitle("MediaNum");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(600, 400);
        setResizable(false);

        JPanel p = new JPanel();
        p.setBackground(Color.white);
        p.setLayout(null);

        JLabel digit = new JLabel("Digite o numero: ");
        digit.setBounds(20, 20, 120, 20);

        txtNumeros = new JTextField();
        txtNumeros.setBounds(20, 40, 200, 30);

        JButton OK = new JButton("OK");
        OK.setBounds(225, 40, 140, 30);

        JButton Exibir = new JButton("Exibir");
        Exibir.setBounds(405, 180, 140, 30);

        JLabel Maior = new JLabel("Maior >>> ");
        Maior.setBounds(60, 100, 80, 80);
        txtMaior = new JTextField();
        txtMaior.setBounds(200, 125, 200, 30);

        JLabel Menor = new JLabel("Menor >>> ");
        Menor.setBounds(60, 140, 100, 100);
        txtMenor = new JTextField();
        txtMenor.setBounds(200, 180, 200, 30);

        JLabel Media = new JLabel("Media >>> ");
        Media.setBounds(60, 200, 100, 100);
        txtMedia = new JTextField();
        txtMedia.setBounds(200, 230, 200, 30);

        OK.addActionListener(event -> pressionouOK());

        Exibir.addActionListener(event -> pressionouExibir());

        p.add(digit);
        p.add(txtNumeros);
        p.add(OK);
        p.add(Exibir);

        p.add(Maior);
        p.add(txtMaior);

        p.add(Menor);
        p.add(txtMenor);

        p.add(Media);
        p.add(txtMedia);
        add(p);

    }

    private void pressionouExibir() {
        int maior = maior(unidade, maior(dezena, centena));
        txtMaior.setText(String.valueOf(maior));

        int menor = menor(unidade, menor(dezena, centena));
        txtMenor.setText(String.valueOf(menor));

        int media = (menor + maior) / 2;
        txtMedia.setText(String.valueOf(media));
    }

    private void pressionouOK() {
        int valor = Integer.parseInt(txtNumeros.getText());
        unidade = (valor / 1) % 10;
        dezena = (valor / 10) % 10;
        centena = (valor / 100) % 10;
    }

    private int maior(int a, int b) {
        return a > b ? a : b;
    }

    private int menor(int a, int b) {
        return a < b ? a : b;
    }
}
G

Mais uma vez, obrigado pela ajuda!

Criado 9 de novembro de 2020
Ultima resposta 10 de nov. de 2020
Respostas 7
Participantes 3