This week's book giveaway is in the Servlets forum.
We're giving away four copies of Murach's Java Servlets and JSP and have Joel Murach on-line!
See this thread for details.
The moose likes Beginning Java and the fly likes Accepting Numeric User Input Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Murach's Java Servlets and JSP this week in the Servlets forum!
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "Accepting Numeric User Input " Watch "Accepting Numeric User Input " New topic
Author

Accepting Numeric User Input

foyo soul
Greenhorn

Joined: Apr 25, 2004
Posts: 1
I am working on a Java program that calculates payroll and overtime pay. The user enters in the number of hours worked and the pay rate. My problem is that I cannot get the program to except numerical input from the keyboard. It's using unicode or something because the calculations are all wrong when I desk check the program. How do you get Java to read 40 hours as an integer of 40 and a double pay rate of $10.00 as double variable of 10.00 from the keyboard as it is entered in by the user. I have been using the System.in.read() method for user input.
Here's what I have so far:
public class Pay
{
public static void main(String[] args) throws Exception
{
double payRate;
int hoursWorked;
double regularPay;
double overTimePay;

System.out.println("Enter the hours worked:");
hoursWorked=(int)System.in.read();
System.in.read();
System.out.println("Enter in the pay rate:");
payRate=(double)System.in.read();
System.in.read();

if(hoursWorked == 50)
{
regularPay = payRate * 40;
overTimePay = (hoursWorked - 40) * (payRate * 2);
}
else if(hoursWorked == 45)
{
regularPay = payRate * 40;
overTimePay = (hoursWorked - 40) * (payRate * 2);
}
else if(hoursWorked == 40)
{
regularPay = payRate * 40;
overTimePay = 0.0;
}
else System.out.println("Invalid number of hours");

System.out.println("The number of hours worked is " + hoursWorked);
System.out.println("The hourly rate is " + payRate);
System.out.println("The regular pay is " + regularPay);
System.out.println("Overtime pay is " + overTimePay);
}

}
P. Sagdeo
Ranch Hand

Joined: Nov 13, 2003
Posts: 67
Uhh, the more knowledgeable people may want to correct me, but I think that one reads text using something else, like:
, not using system.in the way one uses system.out. In shorter terms, one has to make an instance of the JAVA reader in order to read input. Also, as a side note, you may have to include try/catch for IOExceptions.
James Lollar
Greenhorn

Joined: Apr 24, 2004
Posts: 4
You might try this (or something like it) to get your data,.
System.out.print("Enter the hours worked:");
BufferedReader B = new BufferedReader(new InputStreamReader(System.in));
String S = B.readLine();
float N = Float.parseFloat(S);
// int would be input by
// int N = Integer.parseInt(S);

JL
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Accepting Numeric User Input
 
Similar Threads
payroll
Alright, my eyes hurt from staring at this monitor trying to figure this out.
unreachable statement
Need help with structure...
DUE AT MIDNIGHT TONIGHT..1 ERROR..HELP