试图制作贷款计算器,找不到符号

时间:2014-09-22 20:41:05

标签: java variables calculator symbols

我已经搜索了所有谷歌和这里,但无法弄清楚为什么我的计算器无法正常工作。似乎我的所有变量和双精度都在某个时候被声明和调用,但它一直在说"找不到符号。"这适用于变量P,Y和R.有人可以帮忙吗?这是我的代码:

import java.util.Scanner;

public class Carloan {
   public static void main(String[] args){

      int r = R / 1200;
      double n = 12 * Y;        
      double payment  = (P * r) / (1 - Math.pow(1+r, -n));
      double interest = payment * n - P;
      int P;
      int Y;
      double R;

      Scanner input = new Scanner (System.in);

      //double P;
      System.out.println("Enter loan amount: $" + P);

      P = input.nextInt();

      //double Y;
      System.out.println("Enter number of years: " + Y);

      Y = input.nextInt();

      //double R;
      System.out.println("Enter interest rate: %" + R);

      R = input.nextDouble();

      System.out.println("Monthly payments = " + payment);
      System.out.println("Total interest   = " + interest);

   }
}

5 个答案:

答案 0 :(得分:2)

两个问题:

  1. 您在声明它们之前使用这些变量(在其他变量的声明中)
  2. 即使您在使用它们之前移动了之前的声明,您仍然必须在使用前初始化它们(与字段不同,如果初始值为us,则局部变量不会初始化为默认值未在声明中编码。)
  3. 您似乎相信使用算术表达式声明变量会以某种方式将变量的值保持为敢于在表达式中使用的变量更改。不是这种情况;算术表达式仅在编码时执行。

答案 1 :(得分:1)

您希望在使用方程式之前将变量和输入值声明为它们。此外,您不能在给变量之前使用变量,例如行:System.out.println(“输入贷款金额:$”+ P);

package com.company;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        int P, Y;
        double R;
        Scanner input = new Scanner (System.in);

        System.out.println("Enter loan amount: $");
        P = input.nextInt();

        System.out.println("Enter number of years: ");
        Y = input.nextInt();

        System.out.println("Enter interest rate: %");
        R = input.nextDouble();

        double r = R / 1200;
        double n = 12 * Y;
        double payment  = (P * r) / (1 - Math.pow(1+r, -n));
        double interest = payment * n - P;

        System.out.println("Monthly payments = " + payment);
        System.out.println("Total interest   = " + interest);
    }
}

答案 2 :(得分:0)

您在声明之前使用变量 试试

int P;
int Y;
double R;

Scanner input = new Scanner (System.in);

//double P;
System.out.println("Enter loan amount: $" + P);

P = input.nextInt();

//double Y;
System.out.println("Enter number of years: " + Y);

Y = input.nextInt();

//double R;
System.out.println("Enter interest rate: %" + R);

R = input.nextDouble();

int r = R / 1200;
double n = 12 * Y;        
double payment  = (P * r) / (1 - Math.pow(1+r, -n));
double interest = payment * n - P;
System.out.println("Monthly payments = " + payment);
System.out.println("Total interest   = " + interest);

如果您希望将R / 1200转换为int或者只是更改“' r”的类型,请不要忘记将其转换为int。加倍成为:双r = R / 1200;

答案 3 :(得分:0)

您需要在使用之前定义内容。

你做的第一件事就是说int r = R / 1200; - 但是R是什么?你还没有宣布它[还 - 我知道你后来宣布double R,但编译器没有宣布。

我建议在没有表达式的情况下制作所有声明:int r;double n等等,然后(在您收到用户输入后),在底部进行数学运算


在我看来,你之前使用过某种数学语言;重要的是要记住,在过程语言(如java)中,语句是逐行运行的。像x=x+1之类的东西是一个非常有效的陈述,它使x大于该行之前的陈述。 x=2; y=x/2; x=4;将以y==1x==4结尾,因为x的变化不会带回来。

此外,整数运算有点棘手:除法向下舍入 - 5/2 = 2,而5.0/2.0 = 2.5。执行r=R/1200时可能会出现问题,因为R1200都是整数。

答案 4 :(得分:0)

我重新检查了这个问题,我注意到你基本上已经编写了所有代码,它只是出了问题。您希望移动r,n,付款和利息的声明,因为它们依赖于P,Y和R.您还想删除+ P+ Y以及{{1那些不打印任何有意义的部分。

由于你评论说你希望它们是双打的,所以我也继续将所有内容重新翻译成双重内容。如果需要,可以将它们更改回int。

+ R