import java.util.Scanner;
public class ex11
{
static Scanner type=new Scanner(System.in);
public static void main(String args[])
{
int fact=1;
System.out.println("Enter a natural number ");
int num=type.nextInt();
int i=1;
while(i<=num)
{
fact*=i;
i++;
}
System.out.println("Factorial of number " + num + " is " + fact);
}
}
我正在尝试在while循环中放置一个条件语句。条件是测试将是,如果num是负数,换句话说,S.O.P.("You entered a negative #");
,
if(num<0)
S.O.P.("You entered a negative #");
然而,它无法正确打印。
答案 0 :(得分:0)
回答你的问题......就像这样:
int i = 1; // HERE
while (i <= num) {
if (num < 0) {
System.out.println("You entered a negative #");
}
fact *= i;
i++;
}
然而,这不会起作用。
假设&#34; num&#34;你读的小于零。
这意味着循环体中的条件语句不会被执行...如果&#34; num&#34;小于零。
由于这显然是家庭作业,我会留给你弄清楚你应该在这里做什么。但是(提示!)它没有把条件放在循环中。
(请注意:我已经更正了代码中的一些样式错误。将原始版本与我的版本进行比较。这就是 编写Java代码的方式。)
答案 1 :(得分:0)
这个问题很难理解,但从我读到的内容看来,你想要一个循环运行,直到输入的值符合你的前提条件
System.out.println("Enter a non negative number :: ");
int num = type.nextInt();
while(num < 0){
System.out.println("The number you entered was negative!");
System.out.println("Enter a non negative number :: ");
num = type.nextInt();
}
这样的循环对于确保您使用的数据在操作的前提条件下可能会导致DivideByZero
错误或其他问题至关重要。应该在使用num
的值之前放置此循环,以便确保它在程序的上下文中。
答案 2 :(得分:0)
问题在于,如果num
为否定值,则不会进入while loop
,因为在while loop
初始化i=1
之前,因为任何负数都小于1
,while loop
的条件变为假。如果您想检查num
是否为负数,请在if condition
之前插入while loop
,如下所示
import java.util.Scanner;
public class ex11
{
static Scanner type=new Scanner(System.in);
public static void main(String args[])
{
int fact=1;
System.out.println("Enter a natural number ");
int num=type.nextInt();
int i=1;
if(num < 0) {
System.out.println("You entered a negative #");
}
else{
while(i<=num)
{
fact*=i;
i++;
}
System.out.println("Factorial of number " + num + " is " + fact);
}
}
}
答案 3 :(得分:0)
如果你在循环中检查然后它将无效,它仍会乘以df1 <- structure(list(V1 = c("x,f,t,h,b,g", "d,g,h", "g,h,a,s,d", "f",
"q,w,e,r,t,y,u,i,o")), .Names = "V1", class = "data.frame",
row.names = c(NA, -5L))
df2 <- structure(list(v1 = c("x", "d", "g", "f", "q"), v2 = c("f", "g",
"h", "", "w"), v3 = c("t", "h", "a", "", "e"), v4 = c("h", "",
"s", "", "r"), v5 = c("b", "", "d", "", "t"), v6 = c("g", "",
"", "", "y"), v7 = c("", "", "", "", "u"), v8 = c("", "", "",
"", "i"), v9 = c("", "", "", "", "o")), .Names = c("v1", "v2",
"v3", "v4", "v5", "v6", "v7", "v8", "v9"), row.names = c(NA,
-5L), class = "data.frame")
。在开始while循环之前,您需要确保fact
不是负数。
num
另外,在使用它们时,您应该关闭扫描仪。
答案 4 :(得分:0)
您基本上必须检查数字是否小于0.这是在输入时完成的。你可以用这种方式在while循环中输入输入:
System.out.println("Enter a natural #");
while(true){ //loop runs until broken
num = type.nextInt();
if(num>=0)
break;
System.out.println("Wrong input. Please enter a positive number");
}
如果num>=0
,程序控制会跳出循环,即肯定,否则,它会继续循环的下一部分并显示错误消息并再次接收输入。
请注意,自然数字是&gt; = 1.在您的程序中,您实际上是在尝试输入一个&gt; = 0的整数。