Dúvida com lógica e valor de variável

4 respostas
Onimatsu
Boa tarde. Eu estou tentando fazer um programa que imprime o valor da seguinte serie: serie=1-1/2+1/3-1/4+...+1/n Eu fiz o código:
public static void main(String args[]) {

        int op = 1;
        Scanner leia = new Scanner(System.in);

        System.out.print("Digite um valor inteiro para serie (n): ");
        int divisor = leia.nextInt();

        for (int i = 2; i <= divisor; i++) {
            if (i % 2 == 0) {
                int h = op - (1 / i);
            } else {
                int h = op + (1 / i);
            }
        }
        System.out.println("O valor da expressão (h) é: " + h);
    }
Minhas dúvidas: 1-A lógica está correta? 2-Não estou conseguindo imprimir h e seu eu declaro h com um valor, por exemplo, zero da mesma forma que eu fiz a variável op ele imprime zero ao invés de mostrar o valor que aconteceu dentro do for e do if. Como eu devo concertar isso?

4 Respostas

Master.Abs
Dessa forma voce consegue imprimir o h para que você entenda melhor dá uma lida sobre escopo de variáveis.
public static void main(String args[]) {  
  
    int op = 1;  
    Scanner leia = new Scanner(System.in);  
  
    System.out.print("Digite um valor inteiro para serie (n): ");  
    int divisor = leia.nextInt();  
  
    for (int i = 2; i <= divisor; i++) {  
        if (i % 2 == 0) {  
            int h = op - (1 / i);  
    System.out.println("O valor da expressão (h) é: " + h);  
        } else {  
            int h = op + (1 / i);  
    System.out.println("O valor da expressão (h) é: " + h);  
        }  
    }  

}
Flw.
S

Mt vc nao consegue imprimir o h, pq ele existe apenas dentro do for, declare ele fora do loop que vai funcionar.

E

Mais uma coisinha. Para fazer contas, use double, não int - no seu caso, você vai descobrir que 1 / 10 = 0, não 0.1 :frowning:

Onimatsu
Master.Abs:
Dessa forma voce consegue imprimir o h para que você entenda melhor dá uma lida sobre escopo de variáveis.
public static void main(String args[]) {  
  
    int op = 1;  
    Scanner leia = new Scanner(System.in);  
  
    System.out.print("Digite um valor inteiro para serie (n): ");  
    int divisor = leia.nextInt();  
  
    for (int i = 2; i <= divisor; i++) {  
        if (i % 2 == 0) {  
            int h = op - (1 / i);  
    System.out.println("O valor da expressão (h) é: " + h);  
        } else {  
            int h = op + (1 / i);  
    System.out.println("O valor da expressão (h) é: " + h);  
        }  
    }  

}
Flw.
Dessa forma da certo sim mais o que eu queria fazer era imprimir todo o valor do h então se o usuário digitar 5 eu vou ter 1-1/2+1/3-1/4+1/5=0,75 aproximadamente já que uma das divisões deu dizima períodica. Desse jeito que você fez vai mostrar vários resultados e eu só posso mostrar um e é ai que está o problema. Obs: já fiz a correção para double
Criado 27 de março de 2012
Ultima resposta 27 de mar. de 2012
Respostas 4
Participantes 4