2017-04-06 25 views
-2

"1つの整数データメンバーと()とout()の2つのメンバー関数を持つクラスを宣言するjavaでデータメンバーのデータを入出力するプログラムを記述してください。"Javaの静的メソッドで非静的変数を使用できますか?

私の現在のコードは以下の通りです。

import java.util.Scanner; 
public class Operator 
{ 
    static int a; 
    public static void input() { 
     Scanner in=new Scanner(System.in); 
     System.out.println("Enter the number:"); 
     a=in.Nextint(); //Here is problem 
    } 

    public static void output() { 
     System.out.println("Number is:" + a); 
    } 

    public static void main(String[] args) 
    { 
     input(); 
     output(); 
    } 
} 
+0

いいえ:

修正されたコードは、このなければなりません。インスタンスを作成するか、インスタンスを静的にします。 – matt

+2

あなたの「質問」の本文は、タイトルとは無関係です。何を聞いていますか? –

+0

plz上記の文章のコードを書きます。私はthankfullになります –

答えて

0

インスタンス変数とローカル変数が混同されているようです。

「ローカル変数」は、静的メソッド内でいつでも宣言できます。 例えばmain()は静的関数であり、常にその中に変数を宣言します。

したがって、input()関数内でScanner型の変数 "in"を作成しても問題ありません。

しかし、静的メソッドからインスタンス変数とインスタンスメソッドにアクセスすることはできません。

スタックオーバーフロー上のこの投稿は、完全かつ完全な答えを与える:Can non-static methods modify static variables

は限り、あなたのコードが懸念されるとして、コードに若干の誤差があります。 整数を読み取る関数呼び出しは "nextint"ではなく "nextInt"です。 Javaは一般的にすべてのメソッドを定義するためにcamel-caseを使用します。したがって、メソッドの使用には注意してください。

class Operator 
{ 
    static int a; 
    public static void input() { 
     Scanner in=new Scanner(System.in); 
     System.out.println("Enter the number:"); 
     a=in.nextInt(); //this is nextInt and NOT Nextint 
    } 

    public static void output() { 
     System.out.println("Number is:" + a); 
    } 

    public static void main (String[] args) throws java.lang.Exception 
    { 
     // your code goes here 
     input(); 
     output(); 

    } 
} 
関連する問題