Autor Tema: Validaciones Java sumar varios números alarma aviso si queda campo vacío formato  (Leído 1635 veces)

Luisvgonzalez.1405

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 3
    • Ver Perfil
Hola, tengo una duda. Tengo varios campos realizando una suma, pero no sé cómo hacer un condicional dejando uno o varios campos vacíos sin que marque error.
« Última modificación: 09 de Mayo 2021, 20:34 por Ogramar »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 985
    • Ver Perfil
Re: Validar
« Respuesta #1 en: 16 de Marzo 2021, 23:55 »
Tendrás que dar más detalles.
De cuál lenguaje se trata (Java, HTML, Visual,...?), aque error te refieres y ya lo ideal sería que compartieses aquí tu código.

Por otro lado, si el error te refieres a intentar hacer una suma cuando hay campos en blanco, pues lo primero es preguntar por código si hay campos vacíos.
¿Cómo se pregunta? Pues ya depende de cada lenguaje, de ahí la importancia de que nos des más información.
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

Luisvgonzalez.1405

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 3
    • Ver Perfil
Re: Validar
« Respuesta #2 en: 17 de Marzo 2021, 00:00 »
El lenguanje es java,
Tengo 4 campos solo sumo 3 campos 1 campo  lo dejo vacio, pero obviamente me dara error por dejar ese campo vacio, no se que hacer

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 985
    • Ver Perfil
Re: Validar
« Respuesta #3 en: 17 de Marzo 2021, 11:04 »
OK.

Antes de recuperar el valor de un campo de texto, puedes preguntar si contiene algo escrito o no.
Si no tiene nada escrito, ya decides si quieres lanzar un mensaje de advertencia para obligar al usuario a que introduzca un valor, o simplemente ignorar ese campo y no intentar recuperar su contenido.

He escrito un ejemplo rápido y sencillo con 3 campos para recibir valores y sumarlos en un cuarto campo.

La suma funciona aunque falte un valor, o dos, o incluso si faltan todos (resultado entonces será 0)



Lo que hago es que en la acción del botón, declaro unos int inicializados a 0.
A cada uno de estos int, le asignaré el valor de cada campo, pero solo si estos campos tienen algún valor introducido.
Si no lo tienen, no recojo nada y dejo los int con valor 0.

Código: [Seleccionar]
private class AccionSumar implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
int valor1 = 0, valor2 = 0, valor3 = 0;
//Recuperamos los valores de los campos de texto,
//pero solo NO están vacíos
if (!campo1.getText().isBlank())
valor1 = Integer.parseInt(campo1.getText());
if (!campo2.getText().isBlank())
valor2 = Integer.parseInt(campo2.getText());
if (!campo3.getText().isBlank())
valor3 = Integer.parseInt(campo3.getText());
//Hacemos suma para el campo de resultado
resultado.setText(Integer.toString(valor1 + valor2 + valor3));
}
}


De este modo, al hacer la suma no hay problemas y se realizará falten o no valores.
No se si esto te puede servir.

Dejo el código completo para quien quiera probarlo:

Código: [Seleccionar]
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

public class SumaCampos extends JFrame{

private JTextField campo1;
private JTextField campo2;
private JTextField campo3;
private JTextField resultado;
private JButton btSumar;

public SumaCampos() {
campo1 = new JTextField(5);
campo2 = new JTextField(5);
campo3 = new JTextField(5);
resultado = new JTextField(5);
resultado.setEditable(false);
resultado.setForeground(Color.BLUE);
btSumar = new JButton("SUMAR");
btSumar.addActionListener(new AccionSumar());

JPanel panelValores = new JPanel();
panelValores.add(new PanelCampo("Valor 1", campo1));
panelValores.add(new JLabel("+"));
panelValores.add(new PanelCampo("Valor 2", campo2));
panelValores.add(new JLabel("+"));
panelValores.add(new PanelCampo("Valor 3", campo3));
panelValores.add(new JLabel("="));
panelValores.add(new PanelCampo("Resultado", resultado));
JPanel panelBoton = new JPanel();
panelBoton.add(btSumar);

setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));
add(panelValores);
add(new JSeparator());
add(panelBoton);

setTitle("Sumar campos");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setLocationRelativeTo(null);
setVisible(true);
}

private class PanelCampo extends JPanel {

public PanelCampo(String texto, JTextField campo) {
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
add(new JLabel(texto));
add(campo);
setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createEmptyBorder(10, 5, 10, 5),
BorderFactory.createRaisedSoftBevelBorder()));
}
}

private class AccionSumar implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
int valor1 = 0, valor2 = 0, valor3 = 0;
//Recuperamos los valores de los campos de texto,
//pero solo NO están vacíos
if (!campo1.getText().isBlank())
valor1 = Integer.parseInt(campo1.getText());
if (!campo2.getText().isBlank())
valor2 = Integer.parseInt(campo2.getText());
if (!campo3.getText().isBlank())
valor3 = Integer.parseInt(campo3.getText());
//Hacemos suma para el campo de resultado
resultado.setText(Integer.toString(valor1 + valor2 + valor3));
}
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new SumaCampos();
}
});
}
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".