Ajuda Soma em java com varios numeros.

Java

30/04/2012

num1 = Double.parseDouble(JOptionPane.showInputDialog(null, "Digite o primeiro numero")); // entrada de dos numero num2 = Double.parseDouble(JOptionPane.showInputDialog(null, "Digite o segundo numero")); // entrada de dos numero JOptionPane.showMessageDialog(null, " O resultado e " + (num1 + num2)); //saida ja com a soma. Mas se o usuario queser fazer uma soma de 5, 8, 15, 30, 50, 100, numero ai como faço ai tou obrigando ela a fazer apena soma com 2 numero. Vei um programa que perguntava quantos numero ele queria somar, ai aparecia a quantidades de janela de entrada para o usuario
Rudson Porfirio

Rudson Porfirio

Curtidas 0

Respostas

Joao Silva

Joao Silva

30/04/2012

usa um comando de repetição (while)
import javax.swing.JOptionPane;


public class buton {
	public static void main(String args[]){

double end = -1;
double soma =0;
while(end!=0){
		double num = Double.parseDouble(JOptionPane.showInputDialog(null,
				"insira um valor ou digite 0 para finalizar a soma")); // entrada de dos numero
end = num;	
soma = soma+num;
			
}
JOptionPane.showMessageDialog(null, " O resultado e "
		+ soma); //saida ja com a soma.
}}
GOSTEI 0
Rudson Porfirio

Rudson Porfirio

30/04/2012

Queria saber de outro jeito. Tipo ia aparece uma janela que perguntasse quantos numeros ele queria somoar. se ele digita 5 ia aparecer 5 janelas para ele digita so pra aprender mesmo. Tipos um programa que cadastre pessoas se tiver 500 pessoas não vou coloca 500 variavel na mão né. Se poder ajudar nessa aki obrigado. A outra ajudo bastante tbm sou tou tentando entender como vc fez. VLW
GOSTEI 0
Murillo Beltrame

Murillo Beltrame

30/04/2012

public class SomasNumeros {
    public static void main(String[] args) {
        int i = 0, valor = 0;
        double soma = 0;
        while(i == 0){
            valor++;
            double aux = Double.parseDouble(JOptionPane.showInputDialog(null, "Digite o valor "+valor));
            soma = soma + aux;
            i = JOptionPane.showConfirmDialog(null, "Deseja continuar somando?");
            
            if(i == 1){
                JOptionPane.showMessageDialog(null, "O resultado é "+soma);
            }
        }
    }
}
GOSTEI 0
Murillo Beltrame

Murillo Beltrame

30/04/2012

Ou então como você queria , é desse jeito
public class SomasNumeros {
    public static void main(String[] args) {
        int i = 0, valor = Integer.parseInt(JOptionPane.showInputDialog(null, "Quantos valores deseja informar?"));
        double soma = 0;
        while(i != valor){
            i++;
            double aux = Double.parseDouble(JOptionPane.showInputDialog(null, "Digite o valor "+i));
            soma = soma + aux;
            
            if(i == valor){
                JOptionPane.showMessageDialog(null, "O resultado é "+soma);
            }
        }
    }
}
GOSTEI 0
Rudson Porfirio

Rudson Porfirio

30/04/2012

Esse ultimo codigo e oq eu queria saber, se puder explicar ele ficaria muito grato mas se não ja ajudo D+
GOSTEI 0
Murillo Beltrame

Murillo Beltrame

30/04/2012

public class SomasNumeros {   
    public static void main(String[] args) {   
        int i = 0, valor = Integer.parseInt(JOptionPane.showInputDialog(null, "Quantos valores deseja informar?"));   // aqui nessa linha ele pergunta pro usuário quantos numeros ele deseja somar e armazena em uma variavel
        double soma = 0; //variavel que armazena a soma de todos os numeros   
        while(i != valor){   //enquanto a variavel i for menor que a quantidade de vezes ele quer somar
            i++;   //soma +1 na variavel i pra contar que ele ja somou mais uma vez
            double aux = Double.parseDouble(JOptionPane.showInputDialog(null, "Digite o valor "+i)); //armazena o valor digitado em uma variavel auxiliar   
            soma = soma + aux;   // soma vai ser igual a ela mesma mais o valor auxiliar
               
            if(i == valor){   //se for a ultima execução do while ele mostra o resultado
                JOptionPane.showMessageDialog(null, "O resultado é "+soma); //exibi o resultado  
            }   
        }   
    }   
}  

GOSTEI 0
Leonardo Silva

Leonardo Silva

30/04/2012

Aqui está o programa completo, testando cada tipo resultado que o usuário pode digitar, se digitar uma letra, não dará um erro, irá pedir para o usuário digitar novamente, está bem completo!
import javax.swing.JOptionPane;


public class Teste {

	// Método para não escrever novamente o catch.
	public static void erro(String aux){
		if(aux.isEmpty()){ // Se o usuário não digitar, será um campo em branco;
			JOptionPane.showMessageDialog(null, "Campo em branco, digite novamente!", "Atenção!", JOptionPane.WARNING_MESSAGE);
		}else{// Por estar dentro de um catch, se não for um campo vazio, será um caractere inválido;
			JOptionPane.showMessageDialog(null, "Insira somente caracteres válidos!", "Atenção!", JOptionPane.WARNING_MESSAGE);
		}
	}
	
	public static void main(String[] args) {
		
		// Início das variáveis.
		
		String aux = null; // Variável auxiliar para testar erros;
		boolean t1; // Booleano para testar os erros;
		long qtde; // Quantidade de números digitados;
		double num, res; // num -> Número atual que o usuário digitou, res -> Resultado;
		int pergf; // Pergunta final, se o usuário quer fazer uma nova operação.
		
		// Final das variáveis.
		
		// Começo do loop, para que na última pergunta, o usuário decide se faz ou não uma nova operação;
		do{
			// Iniciando as váriaveis
			qtde = 0;
			res = 0;
			// Até aqui
			
			/* Começo do loop para testar que o usuário deve digitar um número maior ou 
			 * igual a 2, para fazer a soma corretamente.
			 */
			do{
				// t1 é um booleano, vai inializar com falso, pois ainda não foi testada ou ainda não está correto o número digitado; 
				t1 = false;
				// Fazemos um while, pois se o t1 for mudado para true, ele para subitamente.
				while(!t1){
					try{
						aux = JOptionPane.showInputDialog(null, "Quantos números você deseja somar?", "Pergunta!", JOptionPane.QUESTION_MESSAGE);
						// Se aux for null, que é a mesma coisa que cancelar ou clicar no botão X, sai do programa.
						if(aux == null){
							System.exit(0);
						}
						/* Usamos uma String, aux no caso, para testarmos se o usuário clicou em cancelar ou no botão X
						 * Usamos agora a variável qtde e passamos para um Long, caso tenha algum erro, não executará
						 * o t1 = true, então não irá sair do loop, e irá até o catch, que é a estrutura para tratamento
						 * de erros, se não tiver nenhum erro, ele sai do loop.
						 */
						qtde = Long.parseLong(aux);
						t1 = true;
					}catch(NumberFormatException Erro){
						// Chama o método erro, para testar os tipos de erro.
						erro(aux);
					}
				}
				// Mostra uma mensagem caso o usuário não tenha digitado um número maior ou igual a 2.
				if(qtde <= 1){
					JOptionPane.showMessageDialog(null, "Insira uma quantidade de números superior a 2!", "Atenção!", JOptionPane.WARNING_MESSAGE);
				}
			}while(qtde <= 1);
			// Final do loop de teste, para o usuário digitar um número maior ou igual a 2.
			
			// Utiliza a variável qtde para definir quantos vezes vamos repetir a mensagem.
			for(long x = 1; x <= qtde; x++){
				// Segue as mesmas mensagens citadas acima.
				t1 = false;
				while(!t1){
					try{
						aux = JOptionPane.showInputDialog(null, "Digite o " + x + "º de " + qtde + " números:", "Pergunta!", JOptionPane.QUESTION_MESSAGE);
						if(aux == null){
							System.exit(0);
						}
						/* Usamos aux.replace, para trocar a (,) por (.), pois se o usuário digitar (,) irá ocorrer
						 * um erro na alocação variável.
						 */
						num = Double.parseDouble(aux.replace(",", "."));
						/* Utilizamos a variável res para receber o valor do resultado, 
						 * res += num é a mesma coisa que res = res + num. 
						 */
						res += num;
						t1 = true;
					}catch(NumberFormatException Erro){
						erro(aux);
					}
				}
			}
			// Imprime resultado.
			JOptionPane.showMessageDialog(null, "Resultado da soma: " + res);
			// pergf é a variável que vai receber a resposta se o usuário deseja somar novamente.
			pergf = JOptionPane.showConfirmDialog(null, "Deseja somar novamente?", "Selecione uma opção!", JOptionPane.YES_NO_OPTION);
		}while(pergf == JOptionPane.YES_OPTION);
		// Final do loop, se o usuário digitar em sim, ele fará tudo novamente, caso não seja sim, finalizará o programa.
	}

}
GOSTEI 0
POSTAR