Java-什么会导致执行while循环,即使是false?

Java-什么会导致执行while循环,即使是false?,java,while-loop,Java,While Loop,我有一个相当大的程序正在工作,我一辈子都搞不清楚为什么一个while语句(在一个方法中)在执行,而这个方法本身却在工作。我知道这个方法本身是正确的,但是程序的其他部分正在使它执行 所以我的问题是,为了解决这个问题,我应该寻找什么 请记住,这只是我整个程序的一个片段,下面的代码可以工作 以下是我的代码的问题区域: import java.util.Scanner; public class BoatTest { private double boatPrice; private double d

我有一个相当大的程序正在工作,我一辈子都搞不清楚为什么一个while语句(在一个方法中)在执行,而这个方法本身却在工作。我知道这个方法本身是正确的,但是程序的其他部分正在使它执行

所以我的问题是,为了解决这个问题,我应该寻找什么

请记住,这只是我整个程序的一个片段,下面的代码可以工作

以下是我的代码的问题区域:

import java.util.Scanner;

public class BoatTest
{
private double boatPrice;
private double downPayment;
private boolean boatIsNew;



//default constructor
public BoatTest()
{
boatPrice = 0.0;
downPayment = 0.0;
boatIsNew = false;
}//end method



//non-default constructor
public BoatTest(double boatPricePassed, double downPaymentPassed, 
boolean boatIsNewPassed)
{
setBoatPrice(boatPricePassed);
setDownPayment(downPaymentPassed);
setBoatIsNew(boatIsNewPassed); 
}//end method



//setters
public void setBoatPrice(double boatPricePassed)
{
Scanner keyboard = new Scanner(System.in);
//test > 0
while(boatPricePassed < 0)
{
System.out.println("Invalid, must be >= 0. ");
System.out.println("Please enter the boat price:");
boatPricePassed = keyboard.nextDouble();
}//end while
boatPrice = boatPricePassed;
}//end method

public void setDownPayment(double downPaymentPassed)
{
Scanner keyboard = new Scanner(System.in);
//test > 0
while(downPaymentPassed < 0)
{
System.out.println("Invalid, must be >= 0. ");
System.out.println("Please enter the down payment:");
downPaymentPassed = keyboard.nextDouble();
}//end while

//test if used > .30
while((downPaymentPassed < boatPrice * .30) && (boatIsNew == false))
{
System.out.println("Invalid, must be > " + (boatPrice * .30) + ".");
System.out.println("Please enter the down payment:");
downPaymentPassed = keyboard.nextDouble();
}//end while

downPayment = downPaymentPassed;
}//end method

public void setBoatIsNew(boolean boatIsNewPassed)
{
boatIsNew = boatIsNewPassed;
}//end method




//getters
public double getBoatPrice()
{
return boatPrice;
}//end method

public double getDownPayment()
{
return downPayment;
}//end method

public boolean getBoatIsNew()
{
return boatIsNew;
}//end method




//output
public String toString()
{
return
"\nBoat Price: " + boatPrice +
"\nDown Payment: " + downPayment +
"\nBoat Is New: " + boatIsNew;
}//end method



}//end class
在首期付款中,特别是:

while((downPaymentPassed < boatPrice * .30) && (boatIsNew == false))
{
System.out.println("Invalid, must be > " + (boatPrice * .30) + ".");
System.out.println("Please enter the down payment:");
downPaymentPassed = keyboard.nextDouble();
}//end while
我已经看了好几个小时的节目了,我一辈子都搞不懂。如果你们中有人能就这个问题给出任何见解,我们将不胜感激


如果有人想看的话,我可以发布整个代码,但是它很长,很混乱

我测试了你的代码,它运行得很好

当您编辑代码但在编译之前忘记保存,或编辑并编译,但在新名称或位置下保存并运行旧代码时,会发生此类错误

Create first instance of Boat class
Create second instance of Boat class
Invalid, must be > 3000.0.
Please enter the down payment:
4000
The first boat information:

Boat Price: 29900.0
Down Payment: 9900.0
Boat Is New: false
The second boat information:

Boat Price: 10000.0
Down Payment: 4000.0
Boat Is New: false

首先,我不会在你的代码中为你找到bug。调试您自己的代码是您应该学习的东西

回答你的问题:

什么会导致执行while循环,即使是false

什么都不会


循环条件在某种意义上是正确的。您可能不这么认为,并且/或者您可能不理解原因,但是它>>考虑了一种单独处理循环的验证方法。这些循环之间唯一真正的区别是什么被验证以及何时被验证。通过这种方式,你可以更精确地确定实际问题是什么。问题到底是什么?哪一个while循环“即使是false也在执行”?有很多while循环,哪一个有问题?请在帖子中只包含相关代码。不是每个人都有时间或耐心阅读/解析所有代码,以找到可能存在问题的部分。请仔细缩进您的代码。这样,就不必用注释来命名结束块括号。将代码减少到最低限度,并使其在编译时能够自主运行。大多数情况下,您会自己在这个过程中发现错误。
Problem:
Invalid, must be > 3000.0.
Please enter the down payment:
Create first instance of Boat class
Create second instance of Boat class
Invalid, must be > 3000.0.
Please enter the down payment:
4000
The first boat information:

Boat Price: 29900.0
Down Payment: 9900.0
Boat Is New: false
The second boat information:

Boat Price: 10000.0
Down Payment: 4000.0
Boat Is New: false