Setar valores

8 respostas
C

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:
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;
				}
			
		}
	}

só pra sabereme 'a' 'b' e 'c' são só variaves que quero contar
outra coisa, eu coloquei

"if(b < a && b!=a"
, 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? :D

8 Respostas

victor.godinho

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?

C

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:

peczenyj

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

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

victor.godinho

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:

C
//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);
	}
}

é esse ae :)

C

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

nascinho

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:

M

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).

Criado 5 de fevereiro de 2009
Ultima resposta 5 de fev. de 2009
Respostas 8
Participantes 5