修改工资核算程序应用程序,以便它继续请求分部信息,直到用户输入停止作为分部名称。此外,对应用程序进行编程,以检查员工人数和每位员工的平均工资是否为正数。如果员工人数或每位员工的平均工资不是正值,则应用程序应提示用户输入正数。
这是我提出的代码,它编译得很好,但没有像我期望的那样运行。
import java.util.Scanner; //program uses class SCanner
public class PayrollPart2
{
public static void main( String[] args )
{
Scanner input = new Scanner( System.in ); // create Scanner to obtain input from command window
// variables
char name; // divisions's name
int number1; // number of employees in the division
double number2; // average salary for the employees
double product; // total division payroll
//prompt user to input division name
System.out.print( "Enter Division's name, type stop to exit: ");
String divisionName = input.nextLine(); //read line of text
while (divisionName !="stop")
{
//prompt user for number of employees in the division
System.out.print( "Enter the number of employees in the division: ");
//read number of employees from user's input
number1 = input.nextInt();
while (number1 <= 0)
{
System.out.print("Please enter a positive number of employees in the division:"); // prompt
number1 = input.nextInt(); // input
}
//prompt user to enter average salary of employees
System.out.print("Enter average salary for the employees: " );
//read average salary
number2 = input.nextDouble();
while (number2 <= 0)
{
System.out.print("Please enter a positive number for the employees salary:"); // prompt
number2 = input.nextDouble(); // input
}
//multiply Number1 by Number2
product = number1 * number2;
//displays division and total division payroll
System.out.printf( "The division %s has a payroll of $%.2f\n" , divisionName, product );
}
} //end method main
} // end class PayrollPart2
我已经待了大约8个小时,此时我完全迷失了下一步。代码遍历循环但不要求不同的分区名称。在第一个提示符下键入exit命令实际上不会退出循环。我应该使用If / Else语句吗?我想我可以使用布尔但我不确定如何实现它。
答案 0 :(得分:5)
使用字符串equals()方法进行字符串比较,而不是!=或==。您的代码中的一个问题是此声明:
while (divisionName !="stop")
将其更改为
while(!("stop".equals(divisionName)))
!=将检查两个对象是否不是同一个内存对象,而equals方法将进行字符串内容比较。
还要注意字符串&#34; stop
&#34;的反向比较。反对divisionName
。如果divisionName为null,这将有助于避免空指针异常。
从相关帖子了解有关字符串比较的详情:Java String.equals versus ==