mardi 8 juin 2021

Why when I execute my Java program does it not convert the first user input, but does every user input after?

I'm trying to write a java program for currency conversion as a class assignment. My code is working almost exactly the way I would like it to. When executed, it will ask for the user to input the Japanese Yen to US Dollar exchange rate. Enter any number and that works like it should.

However, it will prompt the user next to enter the amount of US dollars they want to convert to Yen. Again, the idea is to enter any number that is > 0 because if the user enters 0 the sentinel value will force a quit and build success message. When you enter a number and click 'Enter,' it just shows a blank line and does not make the conversion like I want it to.

But if you enter a number on that next blank line then it makes the conversion! You can even type in the numbers with spaces: 10 20 50 100... it will convert all of them on separate lines.

I'm just trying to figure out how to get rid of that first black line it gives and go straight into the conversions... or some other workaround.

Here is my code:

// Import scanner Object
import java.util.Scanner;
// Import text Object for formatting
import java.text.DecimalFormat;
/**
 *
 * @author dcraw
 */
public class CurrencyConversion {
    public static void main (String [] args) 
    {
        // Identify Scanner 
        Scanner input = new Scanner(System.in);
        
        // Declare variables
        double USDtoJPY; //JPY stands for Japanese Yen
        double USD;// USD stands for US Dollar
        int count = 0;
        
        // Formatting input
        DecimalFormat f = new DecimalFormat ("#,###.##");
        
        // Ask user to input exchange rate from JPY to USD
        System.out.println("What is today's price in JPY for 1 USD?"); // As of 6/6/2021, 1 USD = 109.55 JPY
        USDtoJPY = input.nextDouble();
        
        // Ask user to input how many USD dollars they want to convert
        System.out.println("Enter amount in USD to convert: (0 to Quit)"); 
        USD = input.nextDouble();
        
        // Process Data until sentinel is entered
        while (USD != 0)
        {
            USD = input.nextDouble();
                count++;
        
            if (count > 0)
            {
                double JPY = USDtoJPY * USD; // Perform calculation with exchange rate
                System.out.println("Your " + USD + " dollars is converted to " + f.format(JPY) + " yen");
            }
            else
            {
                System.out.println("Incorrect Data"); // If data is entered incorrectly print Incorrect data
            }
        }
    } 
}


// Why do I have to input something to get it to start the loop? 

Aucun commentaire:

Enregistrer un commentaire