Dúvida

8 respostas
M

Salve!

Tenho o seguinte código:

import javax.swing.*;

public class Layout {

	public static void main(String[] args) {  
	
	String resultado = "";
	
	String numero = JOptionPane.showInputDialog("Digite um número");
	String numero2 = JOptionPane.showInputDialog("Digite um número");
	String numero3 = JOptionPane.showInputDialog("Digite um número");
	
	int numeroInt = Integer.parseInt(numero);
	int numeroInt2 = Integer.parseInt(numero2);
	int numeroInt3 = Integer.parseInt(numero3);
	
	if (numeroInt > 0) {
		resultado = resultado + numeroInt + "\n";
	}
	if (numeroInt2 > 0) {
		resultado = resultado + numeroInt2 + "\n";	
	}
	if (numeroInt3 > 0) {
		resultado = resultado + numeroInt3 + "\n";	
		
		}
		
		JOptionPane.showMessageDialog(null, resultado , "Teste" ,
		JOptionPane.PLAIN_MESSAGE);
		
		System.exit(0);
                
				
	}  
   
}

Uma coisa que eu não estou entendendo, tenho a variável resultado, peço para digitar 3 valores, se no caso for digitado valores maiores que 0, então as condições serão verdadeiras. Mas eu armazenei os três resultados em somente uma variável “resultado” só que mesmo assim ele armazena os três valores e imprimi na tela. O que penso é o seguinte se tenho somente uma variável como ela armazena três valores? Pra mim o que iria acontecer era mostrar somente o ultimo, pois ela iria substituindo os valores conforme as condições pois como ela armazena três valores destintos só nela?

Abçs.

8 Respostas

pissurno

ela esta armazenando por causa disto “resultado = resultado + etc…” que poderia ser substituido por “resultado += etc…” para economia de codigo.
Se caso vc tivesse apenas “resultado = etc…” ai sim ela mostraria apenas o ultimo resultado. :slight_smile:

b11

Como a sua variavel resultado é uma string, a cada if q vc colocou, tem-se resultado = resultado + numero…
ou seja, voce esta concatenando os numeros na vartiavel resultado. Se voce quer que apareça somente o ultimo numero, deveria fazer resultado = numero…

_Renatu

Primeiro, uma dica:

Evite perguntas com assunto “dúvida” ou “preciso de ajuda” e afins. Se você tentar ser mais claro no título, as pessoas sentem mais vontade de ajudar.

Agora vamos a sua pergunta

O seu atributo resultado está concatenando os valores digitados no JOptionPane nas operacoes

resultado = resultado + numeroInt + "\n"

Para substituir o valor, você pode usar assim:

resultado = String.valueOf(numeroInt) + "\n");

No seu caso, o atributo não está armazenando 3 valores int, e sim uma String grande com estes algarismos.

paulofernandesjr

retire o \n

do final das “contas”
dessa forma ele está concatenando as variavesis mesmo que antes você tenha definido como parseInt

#  if (numeroInt > 0) {  
#         resultado = resultado + numeroInt + "\n";  
#     }  
#     if (numeroInt2 > 0) {  
#         resultado = resultado + numeroInt2 + "\n";    
#     }  
#     if (numeroInt3 > 0) {  
#         resultado = resultado + numeroInt3 + "\n";    
#           
#         }

deixe dessa forma

#  if (numeroInt > 0) {  
#         resultado = resultado + numeroInt;  
#     }  
#     if (numeroInt2 > 0) {  
#         resultado = resultado + numeroInt2;    
#     }  
#     if (numeroInt3 > 0) {  
#         resultado = resultado + numeroInt3;    
#    }

PS: se eu falei besteira edite e me corrija

eu não sei em java, porem em outras linguagens

podemos fazer isso

#     if (numeroInt > 0) {  
#         resultado += numeroInt;  
#     }  
#     if (numeroInt2 > 0) {  
#         resultado += numeroInt2;    
#     }  
#     if (numeroInt3 > 0) {  
#         resultado += numeroInt3;    
#    }

em java isso é possível?

abraço

rafaelzulin

cara, sua váriavel resulta é uma String.
quando vc faz:

resultado = resultado + numeroIntx + "\n";

vc esta concatenando a variavel numeroIntx a String resultado, ou seja, vc esta crirando uma String maior.

Se vc quiser somar os tres valores que vc entrou, então vc deve fazer com que resultado seja um int, ir somando todos e somente depois imprimila na tela ou simplesmente fazer assim:

int resultado = numeroInt + numeroInt1 + numeroInt2;
JOptionPane.showMessageDialog(null, String.valueOf(resultado), "Teste" ,  
                                                JOptionPane.PLAIN_MESSAGE);

ok??
t+

M

paulofernandesjr:
retire o \n

do final das “contas”
dessa forma ele está concatenando as variavesis mesmo que antes você tenha definido como parseInt

#  if (numeroInt > 0) {  
#         resultado = resultado + numeroInt + "\n";  
#     }  
#     if (numeroInt2 > 0) {  
#         resultado = resultado + numeroInt2 + "\n";    
#     }  
#     if (numeroInt3 > 0) {  
#         resultado = resultado + numeroInt3 + "\n";    
#           
#         }

deixe dessa forma

#  if (numeroInt > 0) {  
#         resultado = resultado + numeroInt;  
#     }  
#     if (numeroInt2 > 0) {  
#         resultado = resultado + numeroInt2;    
#     }  
#     if (numeroInt3 > 0) {  
#         resultado = resultado + numeroInt3;    
#    }

PS: se eu falei besteira edite e me corrija

eu não sei em java, porem em outras linguagens

podemos fazer isso

#     if (numeroInt > 0) {  
#         resultado += numeroInt;  
#     }  
#     if (numeroInt2 > 0) {  
#         resultado += numeroInt2;    
#     }  
#     if (numeroInt3 > 0) {  
#         resultado += numeroInt3;    
#    }

em java isso é possível?

abraço

Sim é possível.

Agora saquei, não tinha analisado o resultado = resultado+…

vlw abçs.

paulofernandesjr

bom saber dessas coisas!!!

heh

abraço

Mr_Smith

Pessoal !! Boa noite é sobre algoritmo Kruskal, é que estou fazendo um trabalho de um mapa de uma região e precisaria saber, como posso andar por todos as cidades(vértices), sem fechar ciclo, ai preciso pegar as menores arestas.
Valew!

Criado 25 de março de 2008
Ultima resposta 28 de mar. de 2008
Respostas 8
Participantes 7