web-dev-qa-db-ja.com

Java:「エラー:シンボルが見つかりません」

(新人間違い、きっと。)

私はコンピュータサイエンスの1年生で、コードを使って課題のプログラムを書こうとしています。

import Java.util.Scanner;
public class Lab10Ex1 {

   public static void main(String[] arg) {

    Scanner keyboard = new Scanner(System.in);
    System.out.println("Please type a number: ");
    int n = keyboard.nextInt(); 
    calcNumFactors();
  }
  public static void calcNumFactors(){

   System.out.print(n + 1);

  }

}

しかし、コンパイルするとエラーが発生します。

Lab10Ex1.Java:10:エラー:シンボルSystem.out.print(n + 1);が見つかりません。 ^

シンボル:変数n

場所:クラスLab10Ex1

誰かが私に間違ったことや、それを修正する方法を説明してくれれば、とてもありがたいです。

5
Skelatox

n変数はmainメソッドで宣言されているため、メインメソッドでのみ表示され、他の場所では表示されず、calcNumFactorsメソッドの内部では表示されません。これを解決するには、calcNumFactorsメソッドにintパラメータを指定します。これにより、呼び出しメソッドがintなどのnをメソッドに渡すことができます。

public static void calcNumFactors(int number) {
   // work with number in here
}

次のように呼び出します:

int n = keyboard.nextInt(); 
calcNumFactors(n);

変数npublic static void calcNumFactors()で宣言する必要があります

コードでは、Hovercraft Full Of Eelsが言ったように、nの値を関数calcNumFactors()への引数として渡す必要があります。

1
import Java.util.Scanner;
public class Lab10Ex1 {

   private static int n;

   public static void main(String[] arg) {
    Scanner keyboard = new Scanner(System.in);
    System.out.println("Please type a number: ");
     n = keyboard.nextInt(); 
    calcNumFactors();
  }
  public static void calcNumFactors(){

   System.out.print(n + 1);

  }
}
0
ricky