对于我的程序,我需要计算用户输入的数字的阶乘,然后询问他们是否要输入另一个数字。如果是,那么循环应该重复并计算新数字的输入。对于程序,我需要使用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;
答案 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)。