在for循环中“无法解析为变量”

时间:2016-04-15 00:09:42

标签: java

我是Java新手。我试图使用Scanner找到数字的阶乘。我在p收到错误,因为p无法解析为变量。这是什么意思?

import java.util.Scanner;

public class fact {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner object = new Scanner(System.in);
        System.out.println("enter a number:\n");
        int i = object.nextInt();

        int result = 1;

        for (p = 1; p <= i; p++) {
            result = result * 1;
            System.out.println("factorial of a number is:result");
        }

    }

}

4 个答案:

答案 0 :(得分:5)

这意味着您尚未定义变量p(但您尝试在1循环中将其初始化为for。变化

for(p=1;p<=i;p++)

for(int p=1;p<=i;p++)

答案 1 :(得分:2)

您应该在p循环中定义变量for,就像您已定义i变量一样:

for(int p = 1; p <= i; p++)

答案 2 :(得分:2)

这里有几个错误:

第一个(也是最重要的)是你永远不会定义p。正如其他答案所说,请事先(int p;)或在循环中定义它。

第二个是你实际上没有计算阶乘,这是一个额外的问题。但首先解决问题1,因为它是编译器错误。

第三是您实际上并未打印结果。您需要System.out.println("The result was: " + result)

此外,您可能不希望print语句在循环内...

答案 3 :(得分:0)

此代码有很多编译错误。以下是工作代码

import java.util.Scanner;

public class ScannerEx {

public static void main(String[] args) {

    Scanner scanner = new Scanner(System.in);
    System.out.println("enter a number:\n");
    int number = scanner.nextInt();

    int result = 1;


    for(int p=1; p <=number ;p++)  {
        result= result*p;

    }
    System.out.println("Factorial of a number is " + result);
}

}