为什么我没有从while循环中获得所需的结果?

时间:2015-01-27 03:16:54

标签: java windows

我是新手,可以使用一些提示。我的while循环似乎没有正常工作。他们没有显示我的错误消息或检测到我输入的任何负数。

Scanner input = new Scanner(System.in);
String employeeName;
double hourlyRate;
double hoursWorked;
double weeklyPay;

System.out.print("Enter the employee name: ");
employeeName = input.nextLine();

while (!("stop".equals(employeeName))){
    System.out.print("Enter the employee's hourly rate: ");
    hourlyRate = input.nextDouble();

    while (hourlyRate < 0) {
        System.out.println("Enter a positive number");
        hourlyRate = input.nextDouble();
    }

    System.out.print("Enter the number of hours the employee worked: ");         
    hoursWorked = input.nextDouble();

    while (hoursWorked < 0){
        System.out.println("Enter a positive number");
        hoursWorked = input.nextDouble();
    }

    System.out.println(employeeName + " Weekly pay: " + (hourlyRate * hoursWorked));
    employeeName = "stop";
}

当我运行此项并输入负数时,它不会显示我的错误消息。它只显示我输入的两个数字的结果,就好像它们不是负数,并且它会继续执行程序的其余部分。这就像它没有检测到我的负数。

5 个答案:

答案 0 :(得分:1)

我刚刚运行了你的代码,除非我误解了你的问题,否则我看不到你所描述的行为。每当我输入一个负值时,它就会再次输入一个数字。我会尝试再次编译和运行。你在使用IDE吗?

答案 1 :(得分:0)

我运行了你的代码。它工作正常。这是你想要的错误。 您提供的输入是什么?

答案 2 :(得分:0)

我运行程序,运行正常。也许尝试重新启动IDE以清除所有缓冲区..

答案 3 :(得分:0)

(这实际上是一个评论,只作为答案发布,以便我可以包含代码。)

我接受了程序并添加了一些调试输出。我建议尝试这个版本。如果问题是可疑的版本问题,您要么无法获得额外的输出,要么它将开始工作。如果您获得额外输出并且问题仍然存在,请发布新输出。

import java.util.Scanner;

public class Test {
  public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    String employeeName;
    double hourlyRate;
    double hoursWorked;
    double weeklyPay;

    System.out.print("Enter the employee name: ");
    employeeName = input.nextLine();

    while (!("stop".equals(employeeName))) {

      System.out.print("Enter the employee's hourly rate: ");
      hourlyRate = input.nextDouble();
      System.out.println("First call: "+hourlyRate);

      while (hourlyRate < 0) {
        System.out.println("Enter a positive number");
        hourlyRate = input.nextDouble();
        System.out.println("Second call: "+hourlyRate);
      }

      System.out.print("Enter the number of hours the employee worked: ");
      hoursWorked = input.nextDouble();
      System.out.println("Third call: "+hoursWorked);

      while (hoursWorked < 0) {
        System.out.println("Enter a positive number");
        hoursWorked = input.nextDouble();
        System.out.println("Fourth call: "+hoursWorked);
      }

      System.out.println(employeeName + " Weekly pay: "
          + (hourlyRate * hoursWorked));
      employeeName = "stop";
    }
  }
}

以下是运行此程序的Eclipse控制台的示例复制粘贴,只有正输入:

Enter the employee name: xyzzy
Enter the employee's hourly rate: 10
First call: 10.0
Enter the number of hours the employee worked: 2
Third call: 2.0
xyzzy Weekly pay: 20.0

答案 4 :(得分:0)

守则工作正常。 既没有编译错误也没有任何异常。 输出也是所需的。