O que tem de errado nesse programa?

to estudando pelo livro Java como programar 6 edição e venho enfrentando algumas dificuldades,como este programa que não compila —>

public class Juros {
public static void main (String[] args){
    double valor;
    double principal = 1000;
    double taxa = 0.05;
    System.out.printf("%s%20s\n. Ano , Valor em deposito");
    for (int ano = 1; ano <= 10; ++ ano){
    valor = principal * Math.pow(1.0 + taxa,ano); //nao entendi essa parte
    System.out.printf("%4d%,20.2f\n",ano,valor);
}
}
}


é um programa que calcula a soma de valores de taxa de juros,como vocês podem ver…
que tem algum erro que faz com que ele não compile e logo não executa…
também não entendi essa parte que eu comentei,voces poderiam corrigir e também me explicar essa parte que eu não entendi??
–>

for (int ano = 1; ano <= 10; ++ ano){ valor = principal * Math.pow(1.0 + taxa,ano); //nao entendi essa parte

eh isso ai… detalhe no meu NetBeans não aparece que tem erro, ta tudo normal,so que nao compila.

Hum, o “printf()” é uma função do C, não sei como isso foi aparecer numa listagem de Java :slight_smile: Mas de qualquer forma, seguem alguns comentários. Eu mudaria:

System.out.printf("%s%20s\n. Ano , Valor em deposito");

para:

System.out.println("Ano, Valor em Depósito");

E mudaria:

System.out.printf("%4d%,20.2f\n",ano,valor); 

para:

System.out.println("" + ano + ", " + valor); 

E, por fim, o significado do trecho abaixo:

valor = principal * Math.pow(1.0 + taxa,ano);

Você está multiplicando o valor da variável pelo valor de retorno da função Math.pow(), que recebe uma base (<1.0 + taxa> ) e um expoente ( ) e faz a potenciação deles:

http://java.sun.com/javase/6/docs/api/java/lang/Math.html#pow(double,%20double)

roger… printf existe no Java Sim, só que nos retorna um PrintStream que eu não sei nem pra onde vai (se algum amigo souber e quiser colaborar)…

Att.

http://java.sun.com/j2se/1.5.0/docs/api/java/io/PrintStream.html#printf(java.lang.String, java.lang.Object…)

abraço.

Nao vejo nada de errado nexe programa, tenta usar o interface Gel. um bcado antigo mais nunca falha.
O que nao intendeste: valor = principal(1000) * math.pow(calcula a potencia de um numero elevado ao outro) nesse caso o 1 e a taxa, ano

vcs poderiam me explicar detalhadamente esse Math.pow,ai???

a taxa eh 0.05 +

wbdsjunior: he he, vivendo e aprendendo :slight_smile:

Hygor: Math.pow() é uma função de potenciação, retorna o primeiro parâmetro elevado ao segundo.

  1. Você não tomou alguns cuidados ao copiar seu código. Ele tem de ser assim:
public class Juros {  
    public static void main (String[] args) {  
        double valor;  
        double principal = 1000;  
        double taxa = 0.05;  
        System.out.printf("%4s%20s\n",  "Ano" , "Valor em deposito");  
        for (int ano = 1; ano <= 10; ++ ano) {  
            valor = principal * Math.pow(1.0 + taxa,ano); 
            System.out.printf("%4d%,20.2f\n",ano,valor);  
        }  
    }  
}
  1. O resultado dele é:
 Ano   Valor em deposito
   1            1.050,00
   2            1.102,50
   3            1.157,63
   4            1.215,51
   5            1.276,28
   6            1.340,10
   7            1.407,10
   8            1.477,46
   9            1.551,33
  10            1.628,89
  1. Você pode estar com problemas por estar com várias versões diferentes do Java na sua máquina. Deixe apenas com uma versão (6.0).

a versão que eu uso é 6.0 update 13

Microsoft Windows XP [versão 5.1.2600]
© Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\Hygor>java -version
java version “1.6.0_13”
Java™ SE Runtime Environment (build 1.6.0_13-b03)
Java HotSpot™ Client VM (build 11.3-b02, mixed mode, sharing)

C:\Documents and Settings\Hygor>

OK, então compile o código direitinho, e o rode com:

java -cp . Juros

Não se esqueça que seu programa deve ficar em um arquivo-texto com o nome “Juros.java” para compilar corretamente.