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:
Eitcha! Não entendi seu problema , mas o código está correto… O Java está substituindo o valor de suas variaveis quando você faz uma comparação entre elas???
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?
:?
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…
[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);
}
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:
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).