GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Execução de loop


#1

Estou com um problema de loop, se alguém poder contribuir com os seus ensinamentos ficarei muito grato!
Estou precisando que o for efetue a subtração do valorEntrada – valorvenda = valorSubEntrada, e cada linha que ele percorrer ele leve o valor da subtração da última minha até que esse valor chegue a zero.

float valorEntrada;    // Valor que o cliente esta pagando a conta a receber
float valorvenda;    // Valor da venda, é o valor da conta a receber
float valorSubEntrada;    // subtração da entrada valorEntrada - valorvenda
 

for (int i = 0; i < tbContasReceberCliente.getRowCount(); i++) {

float Valor = (float) tbContasReceberCliente.getValueAt(i, 5);            
                float totalEntrada = Float.parseFloat(this.tfValorEntrada.getText());
                float totalSubEntrada = totalEntrada - Valor;

            System.out.println(in);  
}

O objetivo é:
Que o for efetue a subtração da entrada – valor e ele leve para a próxima linha o
Valor da subtração ate esse valo chegue a zero, o for acima está fazendo a subtração, mais ao leva o valor para a próxima linha ele leva o valor inicial da entrada.


#2

É simples, existe o comando “break;”. Ele cancela um looping, pode ser usado como no código abaixo. Quanto ao subtrair o valor repetidas vezes, é necessário que ele seja declarado antes de entrar no looping:

float valorTotal; // Tem que ter um valor a ser substituido


for (int i = 0; i < tbContasReceberCliente.getRowCount(); i++) {

    float Valor = (float) tbContasReceberCliente.getValueAt(i, 5); 
    float totalEntrada = Float.parseFloat(this.tfValorEntrada.getText());
    float valorTotal= valorTotal - totalEntrada - Valor;
    if (valorTotal<=0){
        break;
    }
}

#3

4mega, quando tentei executar deu um problema no codigo!
float valorTotal= valorTotal - totalEntrada - Valor;


#4

@ismaelmartinsds
As variáveis devem ser iniciadas, se não for isso, mande a mensagem do erro.


#5

Problema é que tá declarando pela segunda vez… então mesmo se vc iniciar antes, vai dar erro.
tenta
valorTotal = valorTotal = totalEntrada - Valor.
ao invés de float valorTotal = valorTotal-totalEntrada-Valor.


#6

Essa forma ainda não é o desejado, Pois o que desejo é o seguinte:
ex:
totalEntrada vai receber 78
Valor vai receber 23 e 54

valorTotal 78 - 23
valorTotal na primeira linha vai ser 55
valorTotal 55 - 54
valorTotal na segunda linha vai ser 1


#7

O total de entrada precisa ser definido uma unica vez (fora do for)…

float totalEntrada = Float.parseFloat(this.tfValorEntrada.getText());
int linhas = tbContasReceberCliente.getRowCount(); // aumenta performance...

for (int i = 0; i < linhas; i++) {
    float valor = (float) tbContasReceberCliente.getValueAt(i, 5);
    totalEntrada -= valor; // totalEntrada = totalEntrada - valor;

    System.out.println("Total entrada: " + totalEntrada);
}

Obs: float não é o mais indicado para cálculos monetários, o ideal seria usar double ou melhor ainda BigDecimal


#8

como ficaria o seu for dentro do meu for?

float valorEntrada; // Valor que o cliente esta pagando a conta a receber
float valorvenda; // Valor da venda, é o valor da conta a receber
float valorSubEntrada; // subtração da entrada valorEntrada - valorvenda

for (int i = 0; i < tbContasReceberCliente.getRowCount(); i++) {

float Valor = (float) tbContasReceberCliente.getValueAt(i, 5);
float totalEntrada = Float.parseFloat(this.tfValorEntrada.getText());
float totalSubEntrada = totalEntrada - Valor;

        System.out.println(in);  

}

pois é um for dentro do outro for!


#9

E porque você precisa de um for dentro de outro?

O próprio código que você postou só tem 1 for…


#10

Ok rodevops, acabei de entender como vai ficar so um for, mais ainda não resolveu meu problema, pois estou precisando que ao executar ele pegue o:
valorEntrada - Valor = valorTotal
78 - 23 = 55

agora em vez dele pegar o valorEntrada, queria que ele pega-se o valorTotal ficando assim:
55 - 45 = 11
o valorTotal 55 é a subtração da ultima linha, e o 45 é o Valor que ele recebe da segunda linha da tabela

agora ele passa para a terceira linha, agora ele pegar novamente o valorEntrada, e faz novamente a subtração ficando assim:
11 - 10 = 1
o valorTotal 11 é a subtração da segunda linha, e o 10 é o Valor que ele recebe da terceira linha da tabela

espero ter deixado bem claro, para que os colegas consigam mim ajudar!


#11

Esse é o meu problema, mestre se vc poder mim ajudar ficarei muito grato!


#12

Por que você está declarando pela segunda vez a mesma variável ? E há alguns erros neste código, você precisa iniciar as variáveis, se não elas não serão utilizadas da maneira correta.


#13

Mav3r1ck, qual variável estou declarando pela a segunda vez?


#14

Na verdade não foi você, só agora eu percebi, foi o @4mega. O exemplo dele está iniciando a mesma variável duas vezes.

No seu caso, você tem que inicializar as variáveis com valor 0 pois se não pode dar erro no compilador.

A variável valor seria uma espécie de array ?

E você disse que será valorEntrada - valor = valorTotal, isto não faz sentido, não tem como fazer este tipo de conta, você terá que ir pegar o valorTotal, neste caso 78, e subtrair pelo valorEntrada ou pelo valor, se você tentar subtrair valorEntrada - valor irá lhe dar resultados negativos, pois o valorTotal ao invés de ser 78 menos outro valor, ficará na verdade, 23 - 55 que resultará o valorTotal.

Na verdade você terá que ter pelo menos 4 variáveis, pois o valorTotal você ainda irá reutilizar, então crie uma variável auxiliar que irá pegar o valorTotal menos o valor da linha da tabela, eu testei aqui com 4 variáveis e deu certo, mas não sei se é exatamente o que você quer.

O resultado final na verdade irá ficar o seguinte :

78 - 23 = 55
55 - 45 = 10
10 - 11 = -1

Deu assim no meu código, estou levando em conta de que a variável valor é na verdade um array, pois é uma linha da tabela, e deu certo desta maneira. Se não for assim que queiras, tem outros modos de fazer isto.

OBS : Quantas linhas há na sua tabela ?


#15

Mav3r1ck, a quantidade de linha varia na tabela, vc poderia postar como ficou o seu calculo?


#16

O usuário que coloca a quantidade de linhas na tabela através de um input ? Ou elas já vem com um valor determinado ? Mas e os valores das linhas ? Por exemplo 23 ou 54 ? Também são através de input ou também já vem determinado ?

Teria como você por favor passar a parte da criação da tabela para eu poder implementar e testar meu código ou você simplesmente tem algum código básico de tabela ? Pois preciso testar com o getRowCount() e getValueAt().


#17

Ele puxa automaticamente da tabela, todos os valores são automaticamente da tabela!
Mais o calculo tem que rodar aqui dentro!

int linhas = tbContasReceberCliente.getRowCount();

for (int i = 0; i < linhas; i++) {

float Valor = (float) tbContasReceberCliente.getValueAt(i, 5);
float totalEntrada = Float.parseFloat(this.tfValorEntrada.getText());
float valorTotal = totalEntrada;

}


#18

Faz algo assim:

float valorEntrada = 0;    // Valor que o cliente esta pagando a conta a receber
float valorVenda = 0;    // Valor da venda, é o valor da conta a receber
static float saldo = null;    // subtração da entrada valorEntrada - valorvenda


for (int i = 0; i < tbContasReceberCliente.getRowCount(); i++) {
    if (saldo == null) {
        valorVenda = (float) tbContasReceberCliente.getValueAt(i, 5);            
        valorEntrada = Float.parseFloat(this.tfValorEntrada.getText());
        saldo = valorEntrada - valorVenda;
    } else {
        saldo += (float) tbContasReceberCliente.getValueAt(i, 5);
        valorEntrada = Float.parseFloat(this.tfValorEntrada.getText());
        saldo -= valorEntrada;
    }

}

Pelo que entendi, isso deve resolver seu problema.


#19

fabiio2, esta dando um erro no:
static float saldo = null;
o que seria?


#20

Bom dia, aguardando os esclarecimentos dos mestres!