Setar valores

Olá pessoa.
eu estava tentando aplicar uns códigos no java e percebi que cada vez que seto um valor e fico substituindo para ver o maior o java vai lá e substitui :shock:

meu código:

[code]public void dois() {
for (int i = 0; i < valores.length; i++) {
if (valores[i] > a) {
a = valores[i]; }
if(b < a && b!=a){
b= a;
}
else if(c < b && c!=b){
c=b;
}

	}
}[/code]

só pra sabereme ‘a’ ‘b’ e ‘c’ são só variaves que quero contar
outra coisa, eu coloquei [quote]“if(b < a && b!=a”[/quote], isso não pode fazer?

é tipo um se b maior que a e b diferente de a dae salvaria mas ele salva mesmo sendo iguais! :shock:

alguém pode me dar uma luz? :smiley:

Eitcha! Não entendi seu problema :cry:, mas o código está correto… O Java está substituindo o valor de suas variaveis quando você faz uma comparação entre elas???

Poderia explicar melhor?

exatamente, ao invés de comparar e diz quem é maior ele substitui os valores :? eu tava achando que era na condição “&& a!=b” que eu inventei no if, mas to pesquisando agora e nem sei se tá tão errado assim, por isso perguntei aqui

sabe como fazer ele não adicionar o mesmo valor sempre?
:?

obrigado pela atenção :slight_smile:

b < a && b!=a é redundante.

Acho que vc esta tentando ordenar alguns valores. seria interessante vc postar o codigo inteiro.

Ixi, então ferrou-se, eu tinha entendido… hahaha.

Kara… eu não faço a mínima idéia do porque o Java iria substituir os valores fazendo uma comparação… Tem certeza mesmo?? Aqui na minha máquina o seu código está funcionando normal… (claro, fazendo algumas adaptções para ter as variavéis ‘a’, ‘b’ e ‘valores’).

Dá uma debugada ai que talvez o problema possa ser outro…

Desculpa, mas não sei muito bem como posso ajudar… :frowning:

[code]
//pedir tres valores e somar os dois maiores
public class logic {
private long a = 0, b = 0, c = 0;
private int[] valores = new int[3];

public void um() {
	for (int i = 0; i < valores.length; i++) {
		String a = JOptionPane.showInputDialog("digite valores");
		valores[i] = new Integer(a);
	}
}

public void dois() {
	for (int i = 0; i < valores.length; i++) {
		if (valores[i] > a) {
			a = valores[i];	}
			if(b < a && b!=a){
				b= a;
			}
			else if(c < b && c!=b){
				c=b;
			}
		
	}
}

public void tre(){
	System.out.println(a+"/"+b+"/"+c);
}

}[/code]

é esse ae :slight_smile:

pois é eu debuguei e quando ele entra no if, vai substituindo todos pelo mesmo valor que entrem na clausola do if
ou seja ele não faz a comparação entre eles =x

Com base no que foi discutido, corrigi teu código:

 //pedir tres valores e somar os dois maiores  
 public class logic {  
     private long a = 0, b = 0, c = 0;  
     private int[] valores = new int[3];  
   
     public void um() {  
         for (int i = 0; i < valores.length; i++) {  
             String a = JOptionPane.showInputDialog("digite valores");  
             valores[i] = new Integer(a);  
         }  
     }  
   
     public void dois() {  
         for (int i = 0; i < valores.length; i++) {  
             if (valores[i] > a) {  
                 a = valores[i]; }  
                 if(b < a){  
                     b= a;  
                 }  
                 else if(c < b){  
                     c=b;  
                 }  
               
         }  
     }  
   
     public void tre(){  
         System.out.println(a+"/"+b+"/"+c);  
     }  
 } 

Uma coisa que eu percebi foi a seguinte: vc faz um if deste modo:

if(b < a && b!=a)

Como nele há uma comparação entre duas "variáveis", vc deve agrupá-las, tipo assim:

if((b < a) && (b!=a))

Espero ter ajudado :smiley:

Ambos os código tem o mesmo efeito. O problema citado com esse trecho não são os parênteses, e sim a lógica, uma vez que se um número é maior que outro, obrigatoriamente esses são diferentes (não é necessário fazer duas comparações).