我不能让我的if语句正确循环

问题描述:

我想提示用户,如果他们输入的信息是正确的,程序只是继续而不是重新提示用户。我想我需要改变我如何循环做某种类型的do-while循环,但我不知道该怎么做。我不能让我的if语句正确循环

{ 

    //Here we will set up our method of data entry and decimal format 
    Scanner keyboard = new Scanner(System.in); 
    DecimalFormat eNotation1 = new DecimalFormat("00.00"); 

    //Let's introduce our program to the user 
    System.out.println("Hi, This is a program to calculate quarterly interest growth"); 

    //Here we will prompt the user to enter the amount of quarters 
    System.out.println("How many quarters would you like to display? Please pick a number greater than zero and less than or equal to 10"); 
    int quarterNumber = keyboard.nextInt(); 
    if (quarterNumber > 10 || quarterNumber < 0) 
    { 
    System.out.println("You entered a number outside of the boundrys. Please run the program again and choose a number between 0 and 10 (number can include 10)"); 
    System.exit(0); 
    } 

    //Here we will prompt the user for the starting balance. 
    System.out.println("What is the starting balance of this account?"); 
    double startingBalance = keyboard.nextDouble(); 

    //Here we will prompt the user for the interest rate 
    System.out.println("What is the interest rate (in percent) in your area? Please pick a number from 1 - 20."); 
    double interestRate = keyboard.nextDouble(); 
    if (interestRate < 1 || interestRate > 20) 
    { 
    System.out.println("You entered a number outside of the boundrys. Please run the program again and choose a number between 1 and 20 (can include 1 and 20)"); 
    System.exit(0); 
    } 

    //Here we will double check with the user that the info is correct. 
    System.out.println("The amount of quarters you would like displayed is " + quarterNumber); 
    System.out.println("The starting balance you would like to work with is " + startingBalance); 
    System.out.println("The interest rate in your area is " + interestRate); 
    System.out.println("Is this information correct?"); 
    keyboard.nextLine(); 
    String answer = keyboard.nextLine(); 
    System.out.println(""); 

    //We will have them enter the information again if the answer is no or No 
    if (answer == "no" || answer == "No") 
    { 
    //Here we will prompt the user to enter the amount of quarters 
    System.out.println("How many quarters would you like to display? Please pick a number greater than zero and less than or equal to 10"); 
    keyboard.nextInt(); 
    quarterNumber = keyboard.nextInt(); 

    //Here we will prompt the user for the starting balance. 
    System.out.println("What is the starting balance of this account?"); 
    keyboard.nextDouble(); 
    startingBalance = keyboard.nextDouble(); 

    //Here we will prompt the user for the interest rate 
    System.out.println("What is the interest rate (in percent) in your area? Please pick a number from 1 - 20."); 
    keyboard.nextDouble(); 
    interestRate = keyboard.nextDouble(); 
    } 

    //Next we will proceed with the calculation if the information is indeed correct 
    double endingBalance = startingBalance + (startingBalance * (interestRate/100 * .25)); 
    double interestEarned = endingBalance - startingBalance; 

    //Now we will output the information 
    for (int qn = 1; qn < (quarterNumber + 1); qn++ , startingBalance = startingBalance + interestEarned , endingBalance =startingBalance + (startingBalance * (interestRate/100 * .25)), interestEarned = endingBalance - startingBalance) 
    { 
    System.out.println("Quarter Number      Starting Balance      Interest Earned       Ending Balance "); 
    System.out.println(qn + "         " + eNotation1.format(startingBalance) + "        " + eNotation1.format(interestEarned) + "          " + eNotation1.format(endingBalance) + " ");     
    } 


} 

}

+0

你必须告诉我们你的错误究竟在哪里。另外,你没有告诉我们键盘代表什么。另外,将你的问题简化成一个新的项目,或者更容易理解你的问题。 – aeee98

+0

好的,这是我第一个编程的学期,你可能会说,不习惯问这些问题。这里有更多细节,我首先提示用户输入3个变量:'quarterNumber','startingBalance'和'interest rate'。然后我试着问他们这些信息是否正确。如果用户输入:“否”或“否”,我希望质疑重新开始。目前,当我运行程序时,输入“否”,并且不会按照设计再次提示我输入。 – Kevin

我大概知道你的问题是什么。

示例代码片段:(请注意我在做没有实际的Java编辑器,以便只处理任何丢失的语法

//Here we will prompt the user to enter the amount of quarters 
int quarters = 0; 
System.out.println("How many quarters would you like to display? Please pick a number greater than zero and less than or equal to 10"); 
do 
{ 
quarters = keyboard.nextInt(); 
if (quarters <= 0 || quarters >= 10) 
{ 
System.out.println("You entered a number outside of the boundrys. Please Type a number greater than 0 and less than equal to 10 again)"); 
} 
} 
while (quarters <= 0 || quarters >= 10) 

的想法是一个递归的提示应用程序首先会提示用户在结果输入。 ,然后你处理这个数量所以你必须在do-while循环中处理提示符,假设你不想重复相同的旧文本,你可以做我所做的事情(在我看来这更清洁)

编辑:假设你想要处理应用程序的整个重复。将变量声明的所有内容放入方法(或更好的各种方法来清理处理,并处理这样的事情。

int quarters; 
double balance; 
//TODO : Add all other required variables 
string verification; 

do 
{ 
quarters = getNumberOfQuartersFromUser(); 
balance = getStartingBalance(); 
... //TODO : all the other methods 
//verification 
System.out.println("Is this accepted?"); 
verification = keyboard.nextString(); 
//Handle verfication if it is no or No 
if (verification == null || verification == "No" || verification == "no") 
{ 
System.out.println("Starting from the beginning again"); 
} 
} 
while (verification == null || verification == "No" || verification == "no") 
//out of loop, so handle calculation. 
... 

和方法片断

private int getNumberOfQuartersFromUser() 
{ 
int quarters = 0; 
System.out.println("How many quarters would you like to display? Please pick a number greater than zero and less than or equal to 10"); 
do 
{ 
quarters = keyboard.nextInt(); 
if (quarters <= 0 || quarters >= 10) 
{ 
System.out.println("You entered a number outside of the boundrys. Please Type a number greater than 0 and less than equal to 10 again)"); 
} 
} 
while (quarters <= 0 || quarters >= 10) 
return quarters; 
} 
+0

是的,这是完美的好多了!谢谢你,先生! – Kevin

+0

upvote和正确的答案将是很好的赞赏:) – aeee98

我想你应该附上代码else语句避免无意中进行。请记住,否则会限制代码的运行时间并将其放在更具体的路径上。

+0

嗨,谢谢你的帮助。我不太确定何时会发表我的陈述。我会说如果答案==是或是然后继续。否则重新提示用户输入? – Kevin

+0

如果(条件){ (动作) } 其他{ (动作) } –

+0

记住,你可以执行一个嵌套的if语句,以避免对代码混淆。如果你的条件得到满足,就做这件事,如果不把“别的”放在另一个动作上。如果你有其他条件,你可以把其他if(condition){}。 –

{ 

//Here we will set up our method of data entry and decimal format 
Scanner keyboard = new Scanner(System.in); 
DecimalFormat eNotation1 = new DecimalFormat("00.00"); 

//Let's introduce our program to the user 
System.out.println("Hi, This is a program to calculate quarterly interest growth"); 

//Here we will prompt the user to enter the amount of quarters 
System.out.println("How many quarters would you like to display? Please pick a number greater than zero and less than or equal to 10"); 
int quarterNumber = keyboard.nextInt(); 

//Here you had started your condition I'll try to make it nested if statement 
if (quarterNumber > 10 || quarterNumber < 0) 
//if the condition is true perform this 
{ 
System.out.println("You entered a number outside of the boundrys. Please run the program again and choose a number between 0 and 10 (number can include 10)"); 
System.exit(0); 
} 
else{ 
//if false conditions inside else statement should be performed 

//Here we will prompt the user for the starting balance. 
System.out.println("What is the starting balance of this account?"); 
double startingBalance = keyboard.nextDouble(); 

//Here we will prompt the user for the interest rate 
System.out.println("What is the interest rate (in percent) in your area? Please pick a number from 1 - 20."); 
double interestRate = keyboard.nextDouble(); 

//you could put another if statement inside if statement which is known as nested if statement. 
if (interestRate < 1 || interestRate > 20) 
{ 
System.out.println("You entered a number outside of the boundrys. Please run the program again and choose a number between 1 and 20 (can include 1 and 20)"); 
System.exit(0); 
} 
else{ 
//like before you should enclose this to else to avoid confusion 

//Here we will double check with the user that the info is correct. 
System.out.println("The amount of quarters you would like displayed is " + quarterNumber); 
System.out.println("The starting balance you would like to work with is " + startingBalance); 
System.out.println("The interest rate in your area is " + interestRate); 
System.out.println("Is this information correct?"); 
keyboard.nextLine(); 
String answer = keyboard.nextLine(); 
System.out.println(""); 

//We will have them enter the information again if the answer is no or No 
if (answer == "no" || answer == "No") 
{ 
//Here we will prompt the user to enter the amount of quarters 
System.out.println("How many quarters would you like to display? Please pick a number greater than zero and less than or equal to 10"); 
keyboard.nextInt(); 
quarterNumber = keyboard.nextInt(); 

//Here we will prompt the user for the starting balance. 
System.out.println("What is the starting balance of this account?"); 
keyboard.nextDouble(); 
startingBalance = keyboard.nextDouble(); 

//Here we will prompt the user for the interest rate 
System.out.println("What is the interest rate (in percent) in your area? Please pick a number from 1 - 20."); 
keyboard.nextDouble(); 
interestRate = keyboard.nextDouble(); 
} 

//Next we will proceed with the calculation if the information is indeed correct 
double endingBalance = startingBalance + (startingBalance * (interestRate/100 * .25)); 
double interestEarned = endingBalance - startingBalance; 

//Now we will output the information 
for (int qn = 1; qn < (quarterNumber + 1); qn++ , startingBalance = startingBalance + interestEarned , endingBalance =startingBalance + (startingBalance * (interestRate/100 * .25)), interestEarned = endingBalance - startingBalance) 
{ 
System.out.println("Quarter Number      Starting Balance      Interest Earned       Ending Balance "); 
System.out.println(qn + "         " + eNotation1.format(startingBalance) + "        " + eNotation1.format(interestEarned) + "          " + eNotation1.format(endingBalance) + " ");     
} 
} 
} 
} 

记住,学习嵌套的if语句是一个程序员是必不可少的。没有这个,你所有的条件都会按字面顺序进行。