Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在循环时,我遇到程序跳过第一个输入的问题。请帮忙_Java_Loops_Infinite - Fatal编程技术网

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。现在只纠正它在循环另一个条目时跳过名称条目的问题。。。