11

私はプログラミングが初めてで、オブジェクトのインスタンス化でどこが間違っていたのか知​​りたいです。以下はコードです:

public class Testing{
    private int Sample(int c)
    {
        int a = 1;
        int b = 2;
        c = a + b;
        return c;
    }
    public static void main(String []args)
    {
        Sample myTest = new Sample();
        System.out.println(c);
    }
}
4

7 に答える 7

18

Sampleコードにクラスがありません。あなたが宣言したのはプライベートメソッドです。

// private method which takes an int as parameter and returns another int
private int Sample(int c)
{
  int a = 1;
  int b = 2;
  c = a + b;
  return c;
}

現在のスニペットでは、Testingクラスをインスタンス化し、Sampleメソッドを利用する必要があります。この場合、クラス定義の前にキーワードclassclass Testingがあることに注意してください。

public class Testing{
  private int Sample(int c)
  {
    int a = 1;
    int b = 2;
    c = a + b;
    return c;
 }
  public static void main(String []args)
 {
    Testing t = new Testing(); // instantiate a Testing class object
    int result = t.Sample(1); // use the instance t to invoke a method on it
    System.out.println(result);
 }
}

しかし、それは本当に意味がありません。あなたのSampleメソッドは常に を返します3

あなたはこのようなことをしようとしています:

class Sample {
 int a;
 int b;

 Sample(int a, int b) {
    this.a = a;
    this.b = b;
 }

 public int sum() {
    return a + b;
 }
}

public class Testing {
 public static void main(String[] args) {
    Sample myTest = new Sample(1, 2);
    int sum = myTest.sum();
    System.out.println(sum);
 }
}
于 2013-08-01T06:00:43.240 に答える
4

あなたが実際にオブジェクトを作成したいとは思いません。

Sampleあなたのコード スニペットから、 2 つの数値を加算するという名前の「メソッド」を実行したいことがわかりました。また、JAVA では、メソッドをインスタンス化する必要はありません。オブジェクトは のインスタンスですclass。メソッドは、このクラスが持つ単なる動作です。

main()コンパイルされたコードを実行すると、Java がクラスのインスタンスを自動的に作成し、その中のメソッドを探して実行するため、要件のために明示的にインスタンス化する必要はありません。

おそらく、次のことをしたいだけです:

public class Testing{
    private int sample(int a, int b) {
        return a + b;
    }
    public static void main(String[] args) {
        int c = sample(1, 2);
        System.out.println(c);
    }
}

注:メソッド名を小文字で、クラス名を大文字で始めることが一般的に受け入れられている慣行に変更Sampleしたため、その点では正しいです。sampleTesting

于 2013-08-01T08:16:45.110 に答える
1

サンプル メソッドは整数を返すため、結果を取得してどこでも使用できます。

public static void main(String []args)
{
    int myTest = Sample(4555);//input may be any int else
    System.out.println(myTest);
}
于 2013-08-01T06:04:28.393 に答える
1

サンプルはクラスではなく、単なるメソッドです。そのインスタンスを作成することはできません。あなたはそれを実行するだけです -

int sample = Sample(3);

サンプルをクラスにしたい場合は、クラスとして定義します。

あなたの場合、メソッドは静的ではないため、静的メソッド Main から直接アクセスすることはできません。アクセスできるように静的にします。または、テストの新しいインスタンスを作成して使用するだけです-

Testing testing = new Testing();
int sample = testing.Sample(3);
于 2013-08-01T06:02:13.370 に答える
1

これは、あなたがこれを行うべき方法です。

public class Testing{
public int Sample(int c)
{
    int a = 1;
    int b = 2;
    c = a + b;
    return c;
}
public static void main(String []args)
{
    // Creating an Instance of Testing Class
    Testing myTest = new Testing();
    int c =0;
    // Invoking the Sample() function of the Testing Class
    System.out.println(myTest.Sample(c));
}
于 2013-08-01T06:08:02.130 に答える
1

あなたはキーワードで正しくインスタンス化していnewますが、あなたのカルス名とメソッドの呼び出しは間違っています

 Testing myTest = new Testing();
  int result =myTest.Sample(1);  //pass any integer value
  System.out.println(result );
于 2013-08-01T06:01:28.667 に答える
0

簡単です。Javaでオブジェクトをインスタンス化するには、クラス名を使用し、そのクラスがバロールを受け取ったことを処理する必要があります。例:

...Car c1 = new Car();

于 2020-10-29T18:57:00.863 に答える