如果回答“是”,则需要循环重复。 For和Do while循环

时间:2017-10-10 15:46:47

标签: java

对于我的程序,我需要计算用户输入的数字的阶乘,然后询问他们是否要输入另一个数字。如果是,那么循环应该重复并计算新数字的输入。对于程序,我需要使用for循环和do while循环。我计算了一个因子部分。但是,在输入“是”一词之后,我对如何让循环重复自己非常困惑。非常感谢您的帮助。 是的我知道目前程序中没有while循环,这就是我需要帮助的原因。我不知道如何处理整个情况。截至目前,我的问题尚未解决。同时说明我没有完成我的研究"不是真的,也没有帮助。感谢所有帮助

import java.io.*;
import java.util.*;
public class Prog162a
{ //begin testshell 
public static void main (String[] args)
{ //begin main
    Scanner kbReader=new Scanner(System.in);

    //input 
    System.out.print("Enter a number: ");
    long number= kbReader.nextLong();
    long factorial= 1
    for ( int multiply=2;multiply<number;multiply++);
         { //begin value lopp
            factorial = factorial * multiply
            } // end value loop
       //output
       System.out.print("The calue of " +number+"! is " +multiply);
       System.out.println("\nWould you like to calculate another number?");

    }//end main
}//end testshell

这是一个示例输出。

输入一个数字:6 值6!是720

您想计算另一个数字吗?是

输入一个数字:9 价值9!是362880

您想计算另一个数字吗?是

输入一个数字:12 价值12!是479001600

您想计算另一个数字吗?否

&#34;结束因子处理&#34;

3 个答案:

答案 0 :(得分:0)

这是您使用do-while循环完成的基本结构。

String answer; //this will store the answer
do{ //starts loop
    //everything you're trying to do during the loop goes here
    System.out.println("Do you want to continue?"); //asks them if they want to continue
    answer = input.nextLine() //input will reference your scanner variable and puts answer into the variable we made
}while(answer.equals("yes"); //ends the loop when answer is equal to yes

希望这些评论能帮助您了解正在发生的事情。

您很可能也希望确保他们回答是或否,并将他们的回答转换为大写或大写,这样当您检查它的等同时它不区分大小写。

答案 1 :(得分:0)

在这里,我在循环的底部添加了一个if语句,以便在用户输入&#39; no&#39;

时退出
import java.io.*;
import java.util.*;
public class Prog162a
{ //begin testshell 
public static void main (String[] args)
{ //begin main
    Scanner kbReader=new Scanner(System.in);

    //input 
    System.out.print("Enter a number: ");
    long number= kbReader.nextLong();
    long factorial= 1
    for ( int multiply=2; multiply<number; multiply++);
         { //begin value loop
            factorial = factorial * multiply
            } // end value loop
       //output
       System.out.print("The value of " +number+"! is " +multiply);
       System.out.println("\nWould you like to calculate another number? Please enter yes or no");
       if(kbReader.nextLine().toLowerCase() == "no"){ //if user enters 'no' then it exits program  
        break; //this exits the loop (you could also use 'return;')
       }

    }//end main
}//end testshell

答案 2 :(得分:0)

我尝试重用一些代码。基本上我将你的代码移动到第二个函数(计算函数)并添加了一些缺少的分号。这个新函数在无限while(true)循环中调用。在循环内的每次调用之后,要求用户键入 yes 。如果用户未键入 yes ,则循环将自行中断并退出程序。

private static Scanner kbReader = new Scanner(System.in);

public static void main(String[] args) {
    // endless loop (because I put true inside the brackets and not a variable check)
    while(true) {
        calculate(); // call your calculation code
        System.out.println("\nWould you like to calculate another number? (type 'yes'): ");
        // reads the command line input
        String input = kbReader.next();
        // the exclamation mark is a short form for saying that the result is false
        if (!input.equals("yes")) break; // leaving the loop
    }

}

private static void calculate() {
    System.out.print("Enter a number: ");
    long number = kbReader.nextLong();
    long factorial = 1;
    for (int multiply = 2; multiply < number + 1; multiply++){
        factorial = factorial * multiply;
    }
    System.out.print("The value of " + number + "! is " + factorial);
}

修改 注意for循环中的multiplay < number + 1。不说number + 1,6的结果将是120(而不是720)。