【发布时间】:2015-10-20 04:20:52
【问题描述】:
我正在尝试提示用户输入 Y、y 或 N、n,并使用 while 循环询问他们是否要重新运行程序。我尝试使用 this question 中的代码。我更改了字符串选择 = sc.next();到 in.next();当我运行程序时,一切正常,但是当出现提示并且我回答 y 时,它只会询问我是否要再次运行而不实际运行程序(让用户输入和输出答案)。 n 将正常工作并结束它。感谢您的时间!这让我在这里、youtube 和其他编码论坛上寻找答案很多个晚上。
编辑:我尝试将与贷款相关的代码移动到 while 循环中(在 while 和 boolean 之间),但现在它完全跳过“你想再次计算(y/n):”并直接进入“输入贷款金额:" 不问
package numformexception;
import java.util.Scanner;
public class NumFormException {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
//Declare Variables
double loanNum;
double rateNum;
double trateNum;
double yearNum;
double monthNum;
double equNum;
double outputNum;
//Prompt for input
System.out.print("Enter loan amount: ");
loanNum = Double.parseDouble(in.nextLine());
System.out.print("Enter rate: ");
rateNum = Double.parseDouble(in.nextLine());
System.out.print("Enter number years: ");
yearNum = Double.parseDouble(in.nextLine());
//Postive input data check
if(loanNum <= 0 || rateNum <=0 || yearNum <=0)
{
System.out.println("You must enter positive numeric data! ");
System.exit(0);
}
//Convert years to months
monthNum = yearNum * 12;
//Convert rate to percent and monthly
trateNum= (rateNum / 100) /12;
//Complete numerator
equNum = Math.pow((1+ trateNum), monthNum );
//Plug equNum into formula
outputNum = trateNum * loanNum * (equNum / (equNum - 1));
System.out.printf("The monthly payment is: $ %.2f%n", outputNum);
boolean isContinuing = true;
while( isContinuing) {
boolean inputIsInvalid = true;
while (inputIsInvalid) {
System.out.print("Would you like to calculate again (y/n): ");
String choice = in.next();
if("y".equalsIgnoreCase(choice)) {
inputIsInvalid = false;
}
else if("n".equalsIgnoreCase(choice)){
inputIsInvalid = false;
isContinuing = false;
}
else {
System.err.print("Error: Only valid answers are Y/N. ");
}
}
}
}
}
【问题讨论】:
标签: java while-loop