java - Delete one scanner, Payroll program Week 3 -
this question has answer here:
how able rid of 1 scanner? if use 1 scanner after weekly_pay output is:
employee name
enter hours worked week.
the program skips right on asking employee name variable. both scanners indeed loop asking employee name should.
//week 3 assignment package weeklypay2; import java.util.scanner; // importing java utility class scanner public class weeklypay2 // class weeklypay { //main method public static void main(string[] args) { scanner scanner = new scanner(system.in); scanner scanner1 = new scanner(system.in); string employee_name = null; // variable employee name double hours_worked = 0, // variable weekly hours worked pay_rate = 0, // variable pay rate per hour weekly_pay = 0; // weekly pay = hours * pay_rate while (employee_name!="stop") { system.out.println(""); system.out.println("employee name"); // prompt, employees name employee_name = scanner1.nextline(); if (employee_name.equalsignorecase("stop")) { system.out.print("exiting program"); break; } // ends if statement else { system.out.println("enter hours worked week"); //prompt, hours worked current week pay_rate = scanner.nextdouble(); while(pay_rate < 0.01) { system.out.print("error!!, input postive number: \n"); pay_rate = scanner.nextdouble(); } system.out.println("enter employees hourly pay rate"); // prompt, employees pay rate hours_worked = scanner.nextdouble(); while(hours_worked < 0.01) { system.out.print("error!!, input postive number: \n"); hours_worked = scanner.nextdouble(); } weekly_pay = (double) hours_worked * (double) pay_rate; // setting variable weekly_pay system.out.println(employee_name + "'s weekly pay $" + weekly_pay ); // output employees name , weekly pay } } scanner.close(); scanner1.close(); } //ends main method } //ends class weeklypay
well first thing careful naming scanner. don't start capital. big thing don't want compare strings using !=, not intended string variables. there fun method comparing strings .equals() or .equalsignorecase() depending if want non-case sensitive. after changing few things in code works fine. heads java includes method formatting currency. you're pay numbers missing decimal. if @ numberformat added after scanner , @ println @ end can see simple use.
import java.text.numberformat; import java.util.scanner; // importing java utility class scanner public class weeklypay2 // class weeklypay { //main method public static void main(string[] args) { scanner scanner = new scanner(system.in); numberformat format = numberformat.getcurrencyinstance(); string employee_name = ""; double hours_worked = 0, // variable weekly hours worked pay_rate = 0, // variable pay rate per hour weekly_pay = 0; // weekly pay = hours * pay_rate while (!employee_name.equalsignorecase("stop")) { system.out.println(); system.out.print("employee name: "); employee_name = scanner.nextline(); if (employee_name.equalsignorecase("stop")) { system.out.print("exiting program"); break; } // ends if statement else { system.out.print("enter hours worked week: "); //prompt, hours worked current week pay_rate = scanner.nextdouble(); while(pay_rate < 0.01) { system.out.print("error!!, input postive number: "); pay_rate = scanner.nextdouble(); } system.out.print("enter employees hourly pay rate: "); // prompt, employees pay rate hours_worked = scanner.nextdouble(); while(hours_worked < 0.01) { system.out.print("error!!, input postive number: \n"); hours_worked = scanner.nextdouble(); } weekly_pay = (double) hours_worked * (double) pay_rate; // setting variable weekly_pay system.out.println(employee_name + "'s weekly pay is: " + format.format(weekly_pay)); // output employees name , weekly pay scanner.nextline(); } } scanner.close(); } //ends main method } //ends class weeklypay
and output see:
oh, ps: keep program cleaner prompting input on same line, more intuitive , better at. means add line break after input not before :)
Comments
Post a Comment