Java 调用方法时,当在循环内部使用变量的sentinel值和扫描仪输入时,如何运行while循环?
我第一次java编程开始2个月。我试图在一个类中创建一个while循环,其中包含方法和扫描器输入。试图使用sentinel值中断while循环。我尝试了while循环,do-while循环,使用和不使用if-else块 看起来它需要我初始化salePrice才能工作,但是salePrice是由用户在循环中输入的。在while循环之前,我尝试给它分配一个假值,然后它让我开始循环,但是0没有脱离它,它只是转到循环中的第二个问题 这种逻辑结构是否存在根本性的错误?这些方法是否产生了不同的需求?我刚开始编写代码2个月,所以它必须是一个非常简单的答案。。。在这种情况下,我是否需要将if-else逻辑放在while循环中,以便使用sentinel值中断循环Java 调用方法时,当在循环内部使用变量的sentinel值和扫描仪输入时,如何运行while循环?,java,Java,我第一次java编程开始2个月。我试图在一个类中创建一个while循环,其中包含方法和扫描器输入。试图使用sentinel值中断while循环。我尝试了while循环,do-while循环,使用和不使用if-else块 看起来它需要我初始化salePrice才能工作,但是salePrice是由用户在循环中输入的。在while循环之前,我尝试给它分配一个假值,然后它让我开始循环,但是0没有脱离它,它只是转到循环中的第二个问题 这种逻辑结构是否存在根本性的错误?这些方法是否产生了不同的需求?我刚开始
公共类购买计算器{
//创建主方法
公共静态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();
...
}