2016-08-28 2 views
-2

Итак, моя программа правильно компилируется и работает. Однако, когда программа вычисляет простой интерес, отображается неверное значение. Скажем, он должен отображать $ 470, вместо этого он печатает только 4.7, извините за плохое объяснение, может ли кто-нибудь понять, почему это происходит?Новым для программирования, нужна небольшая помощь

import java.io.*; 
import java.util.Scanner; 
import java.io.File; 
//import java.nio.file.*; 
//import java.nio.file.Paths; 
public class BankInterest { 

    public static void main (String [] args) throws IOException 
    { 

    /* TASK 1: Declare variables */ 

    Scanner user_input = new Scanner (System.in); 

    boolean exit; 
    int accountType; 
    double balance; 
    double principal; 
    // double userInterest; 
    double r; 
    double r2; 
    int year; 

    String commBank = ("commbank.txt"); 
    String westPac = ("westpac.txt"); 

    /*Check if the expected command line is provided */ 

    if (args.length < 1) { 
    /* Display the Usage */ 
    System.out.println("Usage: java BankInterest interestRateFileName"); 
    /* Programs quits with an error code */ 
    System.exit(-1); 
} 

    /* TASK 2: Read interest rates from a file */ 

    String filename = (args[0]); 
    Scanner textReader = new Scanner(new File(filename)); 
    r = textReader.nextDouble(); 
    r2 = textReader.nextDouble(); 
    System.out.println(r); 
    System.out.println(r2); 

    /* TASK 3: Take user input - Which Account */ 

    Scanner keyboard = new Scanner (System.in); 
    System.out.println("Which Account: "); 
    System.out.println("1 - Savings"); 
    System.out.println("2 - Term Deposits"); 

    accountType = keyboard.nextInt(); 

    if (accountType == 1) { 
     accountType = 1; 
} 
    else if (accountType == 2) { 
     accountType = 2; 
} 

    /* TASK 4: Take user input - Principal and Period */ 

    Scanner input = new Scanner (System.in); 
    System.out.println("Principal: "); 
    principal = keyboard.nextDouble(); 

    System.out.println("Years: "); 
    year = keyboard.nextInt(); 

    /* TASK 5: Calculate balance for the chosen account type */ 

    if (accountType == 1) { 
     double userBalance = principal * Math.pow((1 + r/100), year); 
     double userInterest = userBalance-principal; 
     System.out.println(""); 
     System.out.println("The Compound Interest is: " + userBalance); 
    System.out.println("The total amount of Interest earned:" + userInterest); 
    } 
    else if (accountType == 2) { 
     double userBalance = (principal * r2 * year)/100; 
     double userInterest = userBalance-principal; 
    System.out.println(""); 
     System.out.println("The Simple Interest is: " + userBalance); 
    System.out.println("The total amount of Interest earned:" + userInterest); 

    } 
} 
} 
+3

Используйте отладчик, чтобы узнать, что происходит, или если вы не знакомы с использованием отладчика (лучше изучите его), вы также можете распечатать значения в разных местах, чтобы узнать, являются ли они тем, что вы ожидаете от них. – Kayaman

+2

Остановить деление на 100, может быть? Я думаю, нам понадобится дополнительная информация, например, какие ваши материалы есть, прежде чем мы сможем вам помочь. – simonv

+0

Печать неправильного номера, происходит ли это со всеми числами (суммарный интерес, общий интерес, простой интерес)? Кажется ли, что он всегда печатает 1/100 от числа, которое должно быть? –

ответ

0

Во-первых, формула неправильная. Право один (при условии, что r2 представляет%):

double userInterest = (principal * r2 * year)/100; 
double userBalance = principal + userInterest; 
+1

Ответ может быть правильным, но вам нужно объяснить, почему это неправильно, и выставить правильное сообщение – c0der

+0

Чувак его простая формула, что я должен объяснить SI = Принципиальная * скорость * время/100 – Ashish

+1

@ Ашиш, я считаю, что ваша формула неправильный или, по крайней мере, тот, который OP хочет использовать. –

0

Я думаю, это просто потому, что вы даете процентную ставку в качестве процентов. Я имею в виду, что для 20% -ной процентной ставки значение в вашем файле равно 0,20. И в ваших расчетах вы снова разделите его на 100. Либо измените свою процентную ставку на 20, либо избавитесь от деления на 100 секций в вашем расчете.

Смежные вопросы