2016-04-15 14 views
0

我是Java新手。我正在尝试使用Scanner来查找数字的阶乘。由于p无法解析为变量,因此我在p处遇到错误。这是什么意思?“无法解析为变量”in for循环

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"); 
     } 

    } 

} 

回答

5

这意味着你还没有定义的变量p(但你尝试将它在你的for环路初始化为1)。更改

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

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

你应该在你for循环定义变量p像你定义i变量是这样的:

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

你有几个错误的位置:

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

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

第三个是你实际上没有打印结果。你需要做System.out.println("The result was: " + result)

此外,您可能不希望打印语句是循环内...

0

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

import java.util.Scanner; 

公共类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); 
} 

}

+1

启动类用大写字母是不是一个编译错误,只是一个约定禁忌 - 你让这听起来仿佛它是第一个。 – childofsoong