Dúvida

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.

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:

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…

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.

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

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+

[quote=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[/quote]

Sim é possível.

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

vlw abçs.

bom saber dessas coisas!!!

heh

abraço

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!