Percentage calculator does not display results

I am trying to finish this at the last minute for my Java class, when I run the program after it asks the user if the information is correct, it just goes back to the first question no matter what. Here is the code:

import java.util.Scanner;

public class InterestCalculator {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String userResponse = null;

        do {
            int quartersDisplayed = -1;
            double startingBalance = -1, 
                   interestRate = -1;

            do {
                System.out.println("Enter the numbers of quarters you wish to display that is greater than zero and less or equal to 10: ");
                userResponse  = input.next();

                try{
                    quartersDisplayed = Integer.parseInt(userResponse);
                } catch(NumberFormatException e) {

                }

                if(quartersDisplayed <= 0 || quartersDisplayed > 10) {
                    System.out.println("Sorry, that value is not valid.");
                } else {
                    break;
                }
            } while(true);


            do {
                System.out.println("Enter the starting balance (must be greater than zero): ");
                userResponse  = input.next();

                try {
                    startingBalance = Double.parseDouble(userResponse);
                } catch(NumberFormatException e) {

                }

                if(startingBalance <= 0) {
                    System.out.println("Sorry, that value is not valid.");
                } else {
                    break;
                }
            } while(true);


            do {
                System.out.println("Enter the interest rate (greater than zero less than twenty percent): ");
                userResponse  = input.next();

                try {
                    interestRate = Double.parseDouble(userResponse);
                } catch(NumberFormatException e) {

                }

                if(interestRate <= 0 || interestRate > 20){
                    System.out.println("Sorry, that value is not valid.");
                } else {
                    break;
                } 
            } while(true);


            System.out.println("You have entered the following amount of quarters: "
                            + quartersDisplayed);
            System.out.println("You also entered the starting balance of: " + startingBalance);
            System.out.println("Finally, you entered the following of interest rate: "
                            + interestRate);
            System.out.println("If this information is not correct, please exit the program and enter the correct information.");

            double quarterlyEndingBalance = startingBalance + (startingBalance * interestRate / 100 * .25);
            System.out.println("Your ending balance for your quarters is "
                    + quarterlyEndingBalance);
            System.out.println("Do you want to continue?");
            userResponse = input.next();

            if("y".equalsIgnoreCase(userResponse) || "yes".equalsIgnoreCase(userResponse))
                continue;
            else
                break;

        } while(true);
    }
}

What I'm looking for as a sample:

Enter number of quarters from 1 to 10
5
Enter the beginning principal balance greater than zero
4500
Enter the interest rate percentage without the percent sign, greater than 0 percent and less than/equal to 20%
3.5
You entered a principal balance of $4500.0 for 5 quarters at 3.5% interest.
Is this correct? (y/n)
y
Quarter       Beginning       Interest       Ending
Number        Balance         Earned         Balance
1             4500.00          39.38         4539.38

ect ect

+4
source share
2 answers

You may need to restart the loop if the input was incorrect. In this case, you just need to switch continueand break.

continue . ; if, else break true. , , , . do...while(true), . , , .

0
Your code should look something like the one below...
**Look out to the bottom, where the user is informed of the values entered  and check for the changes made**. This is quite simple...


import java.util.Scanner;

public class correctstack{
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String userResponse = null;

        do {
            int quartersDisplayed = -1;
            double startingBalance = -1, 
                   interestRate = -1;

            do {
                System.out.println("Enter the numbers of quarters you wish to display that is greater than zero and less or equal to 10: ");
                userResponse  = input.next();

                try{
                    quartersDisplayed = Integer.parseInt(userResponse);
                } catch(NumberFormatException e) {

                }

                if(quartersDisplayed <= 0 || quartersDisplayed > 10) {
                    System.out.println("Sorry, that value is not valid.");
                } else {
                    break;
                }
            } while(true);


            do {
                System.out.println("Enter the starting balance (must be greater than zero): ");
                userResponse  = input.next();

                try {
                    startingBalance = Double.parseDouble(userResponse);
                } catch(NumberFormatException e) {

                }

                if(startingBalance <= 0) {
                    System.out.println("Sorry, that value is not valid.");
                } else {
                    break;
                }
            } while(true);


            do {
                System.out.println("Enter the interest rate (greater than zero less than twenty percent): ");
                userResponse  = input.next();

                try {
                    interestRate = Double.parseDouble(userResponse);
                } catch(NumberFormatException e) {

                }

                if(interestRate <= 0 || interestRate > 20){
                    System.out.println("Sorry, that value is not valid.");
                } else {
                    break;
                } 
            } while(true);


System.out.println("You have entered the following amount of quarters: "+ quartersDisplayed);
System.out.println("You also entered the starting balance of: " + startingBalance);
System.out.println("Finally, you entered the following of interest rate: "+ interestRate);
System.out.println("If this information is not correct, please exit the program and enter the correct information.");

//Here, you give the user the opportunity to continue or re-enter the values. So you go like...

System.out.println("Is this info correct?");

String user_input = input.next();

if("y".equalsIgnoreCase(user_input) || "yes".equalsIgnoreCase(user_input)){

            double quarterlyEndingBalance = startingBalance + (startingBalance * interestRate / 100 * .25);
            System.out.println("Your ending balance for your quarters is "+ quarterlyEndingBalance);


        System.out.println("\n\nDo you want to continue?");
               userResponse = input.next();

            if("y".equalsIgnoreCase(userResponse) || "yes".equalsIgnoreCase(userResponse))
                    continue;
        else
            break;
}   
else
    continue;


        } while(true);
    }
}
0

Source: https://habr.com/ru/post/1657235/


All Articles