Duvida loop[resolvido]

5 respostas
cido18

Ola a todos, estou fazendo uma lista de exercicios basica da facu(que na realidade é em C, só que estou fazendo em java para treinar).
É o seguinte a soma dos 10 primeiros termos de uma seguencia 5,11,17,23...(de 6 em 6),quando faço estruturado ele funciona, mais quando jogo em metodos não... se alguem tiver alguma sugestão por favor o codigo ta em baixo:

package listadita.exercicio2;
public class Soma {
    private int valor;

    public Soma(){
    }

    public void setValor(int valor){
        this.valor=valor;
    }

    public int getValor(){
        return valor;
    }

    public void SomaTermo(int valor){
            for(int i=0;i<10;i++){
                this.valor=this.valor + 6;
        }
    }
}

package listadita.exercicio2;
import java.util.Scanner;

public class TesteSoma {
    
    public static void main(String[] args){
        int num;
        Soma s=new Soma();
        Scanner scan=new Scanner(System.in);
        System.out.println("Insira um valor: ");
        num=scan.nextInt();
        s.SomaTermo(num);
        System.out.println(s.getValor());
    }
}

obs: fiz um scanner só por frescura,porque a seguencia inicia em 5 mesmo.
Agradeço a todos

5 Respostas

Eric_Yuzo

public void SomaTermo(int valor){ // Esta variável valor não está sendo utilizado em nenhum momento, poderia até removê-la for(int i=0;i<10;i++){ this.valor=this.valor + 6; } }
Remova aquela variável valor, que não faz nada e especifique o valor pelo método setValor:

public static void main(String[] args){ int num; Soma s=new Soma(); Scanner scan=new Scanner(System.in); System.out.println("Insira um valor: "); num=scan.nextInt(); s.setValor(num); // seta o valor s.SomaTermo(); // Executa as somas System.out.println(s.getValor()); }

KaosBr

Bom dia,

Editei para remover minha resposta. Já havia sido respondida enquanto digitava…

[]s

cido18

Obrigado,mais fiquei com uma duvida, então o erro estava no encapsulamento???,porque minha ideia era apenas passar o valor lido para o metodo, só que ele não utlizava esse valor ou quando utilizava apenas fazia uma soma.

Eric_Yuzo

public void SomaTermo(int valor){ // int valor está declarando uma variável local que existirá apenas durante a execução do método. for(int i=0;i<10;i++){ this.valor=this.valor + 6; // O this se refere a instância, ou seja, está usando a variável de instância e não a variável local que foi criada logo acima. } }
Para especificar o valor diretamente pelo método, poderia, por exemplo, atribuir o valor após efetuar os cálculos.

public void SomaTermo(int valor){ for(int i=0;i<10;i++){ valor=valor + 6; } this.valor = valor; }

cido18

aaaaaa, entendi ^^, poxa era tão besta
muito obrigado

Criado 4 de janeiro de 2011
Ultima resposta 5 de jan. de 2011
Respostas 5
Participantes 3