2017-12-05 17 views
0

私は小さなJavaコードを書いており、クラス内の他のメソッドでもmainメソッドで作成したものと同じオブジェクトを使用します。何か方法はありますか?私はちょうどdigitSumを呼び出すChecklengthメソッドで毎回新しいオブジェクトを作成したくない。メインメソッドで作成した同じオブジェクトを使用したいクラスの異なる場所で同じオブジェクトを使用する方法は?

注:メソッドのプロパティを変更することなく、

public class UserMainCode { 

    public int digitSum(int input1) { 
     int num = input1; 
     int sum = 0; 
     int output = 0; 
     int length = 0; 
     while (num > 0) { 
      sum = sum + num % 10; 
      num = num/10; 
     } 
     output = sum; 
     length = Integer.valueOf(Integer.toString(output).length()); 
     Checklength(length, output); 
     return length; 
    } 

    public static void Checklength(int length, int sum) { 
     if (length > 1) { 
      UserMainCode b = new UserMainCode(); 
      b.digitSum(sum); 
     } 
     else { 
      System.out.println(sum); 
     } 
    } 

    public static void main(String[] args) { 
     UserMainCode o = new UserMainCode(); 
     o.digitSum(976592); 
    } 
} 

任意のアイデア?

+1

"UserMainCode o"をクラス変数として宣言し、どこでも使用する – Fairoz

+2

'digitSum'を静的にして、インスタンスを使用しないようにすることもできます。 –

+0

@JuanCarlosMendoza、質問で私のノートをチェックしてください.. !! :) – CookingJava

答えて

0

この状況で行うことはchecklengthメソッドからstaticを削除することです。 staticは、メソッドがインスタンスレベルではなくクラスレベルに属していることを意味します。これを削除すると、checklengthがインスタンスレベルに戻り、同じインスタンス(thisというキーワードで明示的にアクセス可能)でdigitSumを呼び出すことができます。

public class UserMainCode { 

    public int digitSum(int input1) { 
     int num = input1; 
     int sum = 0; 
     int output = 0; 
     int length = 0; 
     while (num > 0) { 
      sum = sum + num % 10; 
      num = num/10; 
     } 
     output = sum; 
     length = Integer.valueOf(Integer.toString(output).length()); 
     Checklength(length, output); 
     return length; 
    } 

    public void checklength(int length, int sum) { 
     if (length > 1) { 
      // deleted instance b - we don't need it 
      digitSum(sum); // implicitly means this.digitSum(sum); 
     } 
     else { 
      System.out.println(sum); 
     } 
    } 
} 

これらの操作はすべて、メインメソッドで作成されたインスタンスで行われるようになりました。

関連する問題