Java 调用方法时,当在循环内部使用变量的sentinel值和扫描仪输入时,如何运行while循环?

Java 调用方法时,当在循环内部使用变量的sentinel值和扫描仪输入时,如何运行while循环?,java,Java,我第一次java编程开始2个月。我试图在一个类中创建一个while循环,其中包含方法和扫描器输入。试图使用sentinel值中断while循环。我尝试了while循环,do-while循环,使用和不使用if-else块 看起来它需要我初始化salePrice才能工作,但是salePrice是由用户在循环中输入的。在while循环之前,我尝试给它分配一个假值,然后它让我开始循环,但是0没有脱离它,它只是转到循环中的第二个问题 这种逻辑结构是否存在根本性的错误?这些方法是否产生了不同的需求?我刚开始

我第一次java编程开始2个月。我试图在一个类中创建一个while循环,其中包含方法和扫描器输入。试图使用sentinel值中断while循环。我尝试了while循环,do-while循环,使用和不使用if-else块

看起来它需要我初始化salePrice才能工作,但是salePrice是由用户在循环中输入的。在while循环之前,我尝试给它分配一个假值,然后它让我开始循环,但是0没有脱离它,它只是转到循环中的第二个问题

这种逻辑结构是否存在根本性的错误?这些方法是否产生了不同的需求?我刚开始编写代码2个月,所以它必须是一个非常简单的答案。。。在这种情况下,我是否需要将if-else逻辑放在while循环中,以便使用sentinel值中断循环

公共类购买计算器{
//创建主方法
公共静态void main(字符串[]args){
//声明变量
//双倍销售价格;
双倍折扣=.15;
最大购买量加倍;
双倍销售价格;
//创建扫描仪对象
扫描仪用户输入=新扫描仪(System.in);
而(售价>0){
//提示用户输入价格
System.out.println(“输入项目的价格。输入0以结束程序”);
//从用户处读取价格并存储在销售价格中
salePrice=userInput.nextDouble();
//为salesPrice输入创建扫描程序对象
System.out.println(“输入的价格:$”+销售价格);
//提示用户输入最大购买金额
System.out.println(“输入最大购买金额”);
//从用户处读取最大金额并存储在maxPurchaseAmount中
maxPurchaseAmount=userInput.nextDouble();
//调用displaypricewithtax方法
显示含税价格(销售价格);
//调用computePriceAfterDiscountMethod
计算价格后折扣(销售价格、折扣);
//调用DisplayPurchableLimit方法
显示PurchasableNumber(售价、maxPurchaseAmount);
}//关闭while循环
}//关闭主管道

在Java中,必须先初始化任何局部变量1,然后才能读取其值。不要与使用默认值初始化的类字段2混淆

1-在语句块内声明的变量(
{…}

2实例变量或类变量


选项1:将
while
循环更改为
do while
循环。使用此选项,在迭代后进行检查,因此为变量指定一个值:

double salePrice;

do {
    ...
    salePrice = userInput.nextDouble();
    ...
while (salePrice > 10);
为了避免执行迭代的其余部分,可以使用
if
;但通常使用下一个选项(选项2):

double salePrice;

do {
    ...
    salePrice = userInput.nextDouble();
    if (salePrice >0) {
        ...
    }
while (salePrice > 10);

选项2:在循环内使用
if

while (true) {    // for ever
    ...
    salePrice = userInput.nextDouble();
    if (salePrice <= 0)
        break;
}

选项4:指定假初始值:

double salePrice = 1.0;
while (salePrice > 0) {
    ...
    salePrice = userInput.nextDouble();
    ...
}

(我建议选择第一个或第二个选项,在某些情况下最终选择第三个)

while循环条件
(salePrice>0)
salePrice
给定值之前无法检查。因此,给它一个初始值,或者重新构造循环。谢谢。当我将do-while逻辑放入时,它仍然无法正确运行。如果我在它请求用户输入后放入while,它会不断询问我物品的价格。如果我在me之后放入逻辑thod调用,程序运行良好,但0并没有让我脱离循环,程序只是将下一个问题打印到控制台。我被难住了!啊,好吧,我会试试。第一次发布,所以我不确定到底有多少或者如何包含我尝试过的所有内容。谢谢你的帮助。
double salePrice = 1.0;
while (salePrice > 0) {
    ...
    salePrice = userInput.nextDouble();
    ...
}