0
class useTent
{
    Scanner keyboard=new Scanner (System.in);

    public void main (String[] args)
    {

        Tent t= new Tent();
        HireContract hc = new HireContract();
        ProcessHire(t, hc);
    }
}

これは私のコードで、同じエラーが発生し続けます:

" メイン メソッドはクラス useTent で静的ではありません。メイン メソッドを次のように定義してください: public static void main(String[] args) "

それを静的にすると、次のエラーが発生します。

「C:\Users\Emma\Documents\opps ass1\useTent.java:22: エラー: 非静的メソッド ProcessHire(Tent,HireContract) は静的コンテキスト ProcessHire(t, hc) から参照できません。」

そしてまたまだ

「エラー: メイン メソッドはクラス useTent で静的ではありません。メイン メソッドを次のように定義してください: public static void main(String[] args)」

4

4 に答える 4

1

Java はデフォルトでメソッドを探します

public static void main (String[] args) { }

または言う

public static void main (String ...args) {}

args は public static void main (String ...arguments) {} のような任意の名前にすることができます

public static void main メソッドが既にある場合は、通常のメソッドとして機能する別の main メソッドを使用できます。

メソッドを静的にすると、他のエラーが発生します。静的コンテキストでは、オブジェクトを初期化せずに非静的メソッド(クラスに対してローカル)を呼び出すと、javaが静的コンテキスト/メソッドからの非静的呼び出しを許可しないため、エラーが発生するためです。

 non-static method error

解決策の 1 つの例は、ProcessHire メソッドを static にすることです。

class UseTent
{
    Scanner keyboard=new Scanner (System.in);

public void main (String[] args)
    {

    Tent t= new Tent();
    HireContract hc = new HireContract();
    ProcessHire(t, hc);

    }

public static void processProcessHire(Tent tent,HireContract hireContract){
//your method definition
}
}

または、メソッドを静的にできない場合は、以下のアプローチを使用してください:-

class UseTent
{
    Scanner keyboard=new Scanner (System.in);

public void main (String[] args)
    {

    Tent t= new Tent();
    HireContract hc = new HireContract();
   new UseTent().ProcessHire(t, hc);

    }

public void processProcessHire(Tent tent,HireContract hireContract){
//your method definition
}
}
于 2015-03-28T06:14:04.943 に答える
1

エラーがあなたに言っているのと同じようにmainrequireの署名static

public static void main (String[] args) {

そして、あなたは投稿しませんでしたが、おそらく参照を保存するために andProcessHireが必要だったと思いますnew

ProcessHire ph = new ProcessHire(t, hc);
于 2015-03-28T06:01:53.657 に答える
0

ProcessHire メソッドが静的で ABC クラスの場合、これを試してください。

class useTent{

    Scanner keyboard=new Scanner (System.in);

    public static void main (String[] args){

        Tent t= new Tent();
        HireContract hc = new HireContract();
        ABC.ProcessHire(t, hc);
   }
}

また、Java 命名規則に従います。

于 2015-03-28T06:11:44.707 に答える