Java 在循环时,我遇到程序跳过第一个输入的问题。请帮忙
好的,所以我不得不修改我已经在运行的程序,使用两个独立的类…一个用来执行任务,一个用来存储信息。一旦它进行第一次计算并到达第二个条目,它就会跳过员工姓名。为什么?请帮忙。代码如下:Java 在循环时,我遇到程序跳过第一个输入的问题。请帮忙,java,loops,infinite,Java,Loops,Infinite,好的,所以我不得不修改我已经在运行的程序,使用两个独立的类…一个用来执行任务,一个用来存储信息。一旦它进行第一次计算并到达第二个条目,它就会跳过员工姓名。为什么?请帮忙。代码如下: package payroll_program_3; import java.util.Scanner; public class payroll_program_3 { public static void main(String[] args) {
package payroll_program_3;
import java.util.Scanner;
public class payroll_program_3
{
public static void main(String[] args)
{
Scanner input = new Scanner( System.in );
employee_info theEmployee = new employee_info();
String eName = "";
double Hours = 0.0;
double Rate = 0.0;
while(true)
{
System.out.print("\nEnter Employee's Name: ");
eName = input.nextLine();
theEmployee.setName(eName);
if (eName.equalsIgnoreCase("stop"))
{ return;
}
System.out.print("\nEnter Employee's Hours Worked: ");
Hours = input.nextDouble();
theEmployee.setHours(Hours);
while (Hours <0) { System.out.printf("Hours cannot be negative\n");
System.out.printf("Please enter hours worked\n");
Hours = input.nextDouble();
theEmployee.setHours(Hours);
}
System.out.print("\nEnter Employee's Rate of Pay: ");
Rate = input.nextDouble();
theEmployee.setRate(Rate);
while (Rate <0) { System.out.printf("Pay rate cannot be negative\n");
System.out.printf("Please enter hourly rate\n");
Rate = input.nextDouble();
theEmployee.setRate(Rate);
}
System.out.print("\n Employee Name: " + theEmployee.getName());
System.out.print("\n Employee Hours Worked: " + theEmployee.getHours());
System.out.print("\n Employee Rate of Pay: " + theEmployee.getRate() + "\n\n");
System.out.printf("\n %s's Gross Pay: $%.2f\n\n\n", theEmployee.getName(), theEmployee.calculatePay());
}
}
}
PART 2:
package payroll_program_3;
public class employee_info
{
String employeeName;
double employeeRate;
double employeeHours;
public employee_info()
{
employeeName = "";
employeeRate = 0;
employeeHours = 0;
}
public void setName(String name)
{
employeeName = name;
}
public void setRate(double rate)
{
employeeRate = rate;
}
public void setHours(double hours)
{
employeeHours = hours;
}
public String getName()
{
return employeeName;
}
public double getRate()
{
return employeeRate;
}
public double getHours()
{
return employeeHours;
}
public double calculatePay()
{
return (employeeRate * employeeHours);
}
}
package payroll\u program\u 3;
导入java.util.Scanner;
公共类工资单计划3
{
公共静态void main(字符串[]args)
{
扫描仪输入=新扫描仪(System.in);
员工信息员工=新员工信息();
字符串eName=“”;
双倍小时=0.0;
倍率=0.0;
while(true)
{
系统输出打印(“\n输入员工姓名:”);
eName=input.nextLine();
雇员。设置名称(eName);
if(eName.equalsIgnoreCase(“停止”))
{返回;
}
System.out.print(“\n输入员工的工作时间:”);
小时数=输入。下一步加倍();
员工。设定小时数(小时);
而(小时有两个地方可以发生无限循环,因为小时和速率在它们内部没有变化
while (Hours <0)
{
System.out.printf("Hours cannot be negative\n");
System.out.printf("Please enter hours worked\n");
}
while (Rate <0)
{
System.out.printf("Pay rate cannot be negative\n");
System.out.printf("Please enter hourly rate\n");
}
while(Hours有两个地方可以发生无限循环,因为Hours
和Rate
在它们内部没有变化
while (Hours <0)
{
System.out.printf("Hours cannot be negative\n");
System.out.printf("Please enter hours worked\n");
}
while (Rate <0)
{
System.out.printf("Pay rate cannot be negative\n");
System.out.printf("Please enter hourly rate\n");
}
while(Hours您需要Hours=input.next double更改hour var使while条件失效您需要Hours=input.next double更改hour var使while条件失效如果您在何处输入负数?您必须准确地告诉我们您正在做什么我已经设置好了它,以便在小时或小时e rate是一个负数。问题是它继续循环错误消息。我希望它提示重新输入。如果我使用“If”语句而不是“while”语句,我注意到它只是继续执行程序。我将其更改为“while”但是现在我遇到了循环问题。我是编程新手,所以我不知道问题出在哪里is@threenplusone已经指出了下面的问题;不过我对您的代码还有一些其他建议。Java惯例是类名是(通常)名词和以大写字母开头。例如,PayrollProgram3
和EmployeeInfo
。变量名也以驼色字母开头,但以小写字母开头-hours
或rate
。此外,当您从输入中读取小时数或费率时,您应该检查是否有nega在设置employee对象中的值之前,请输入tive input。实际上,我只是尝试输入Hours=input.nextDouble();theEmployee.setHours(小时);和Rate=input.nextDouble();theEmployee.setRate(速率);在它们各自的错误代码下面,它似乎工作正常。这似乎是一条漫长的路,但它可以工作lol。现在只纠正当它循环到另一个条目时跳过名称条目的问题…如果你在何处输入负数?你必须确切地告诉我们你在做什么我已经设置好了它,这样它会给我一个错误如果小时数或速率为负数,则显示消息。问题是,它会继续循环错误消息。我希望它提示重新输入。如果我使用“if”语句而不是“while”语句,我注意到程序仍在运行。我将其更改为“while”但是现在我遇到了循环问题。我是编程新手,所以我不知道问题出在哪里is@threenplusone已经指出了下面的问题;不过我对您的代码还有一些其他建议。Java惯例是类名是(通常)名词和以大写字母开头。例如,PayrollProgram3
和EmployeeInfo
。变量名也以驼色字母开头,但以小写字母开头-hours
或rate
。此外,当您从输入中读取小时数或费率时,您应该检查是否有nega在设置employee对象中的值之前,请输入tive input。实际上,我只是尝试输入Hours=input.nextDouble();theEmployee.setHours(小时);和Rate=input.nextDouble();theEmployee.setRate(速率);下面是它们各自的错误代码,它似乎工作正常。这似乎是一条漫长的路,但它可以工作lol。现在只纠正它在循环另一个条目时跳过名称条目的问题。。。