0

私は2つのクラスを作成しました。最初のクラスでは、コンソールに値を出力するコマンドで値を返すメソッドを別のクラスで作成しようとしました。しかし、互換性のない型があるというエラーが表示されます。以下に、私が作成した 2 つのクラスを示します。それらから計算機を作成したいと考えています。

class calc1
{
    public static int num1; //first number variable
    public static int num2; //Second number variable
    public static String op; //Operatior variable
    public static void main(String[] args) //
    {
        num1 = Integer.parseInt(args[0]);
        num2 = Integer.parseInt(args[2]);
        op = args[1];
        calc3.calculate(op); //Calling method from the second class with an arugement.
    }
}

これは2番目です:

class calc3
{
    public static int calculate(String ops)
    {
        switch(ops) //I believe that ops stores value from op variable in the first class.
        {
        case "+": 
            {
                int num = calc1.num1 + calc1.num2;
                return (System.out.println(num));
            }

        }
    }
}

コンパイラから得られるエラーメッセージは次のとおりです。

Desktop$ javac calc1.java
./calc3.java:10: error: incompatible types
        return (System.out.println(num));
                                  ^
 required: int
 found:    void
1 error

PS。私が行っているプロセスがメソッドのオーバーロードと呼ばれているかどうか疑問に思っていましたか?

4

4 に答える 4

2

System.out.println戻りますvoid。「計算」メソッドは を返しますint

数値を出力してメソッドに返す場合は、コードを次のように変更する必要があります。

System.out.println(num);
return num;

PS:そこにメソッドをオーバーロードしていないようです。

于 2013-06-15T06:59:54.620 に答える
0

Java の特定の基本概念を理解する必要があります。

System.out.println(num);ステートメントは印刷するだけで、何も返しません。

そのため、戻り値の型がintである間、計算メソッドはvoid以外を返しません。

条件ステートメントの外側にもある int 値を返す必要があります (もちろん、条件ステートメントで返すこともできます) が、コンパイラを満足させるには、viz のような外側の条件ステートメントが少なくとも 1 つ必要です。

これだけではうまくいきません

System.out.println(num);

return num;

return num;サイド switch ブロックの外側にも return like ステートメント ( ) があることを確認してください。

于 2013-06-15T07:17:19.553 に答える
0

あなたの次のクラスで

class calc3
{
public static int calculate(String ops)
{
switch(ops) //I believe that ops stores value from op variable in the first class.
{
case "+": 
    {
        int num = calc1.num1 + calc1.num2;
        return (System.out.println(num));
    }

}
}
}

System.out.println(num)ちょうど戻ってくるはずなのに、あなたは戻ってきていますnum

calc3.calculate()戻り値の型として int が必要です。

進行して多くのコーディングを開始すると、Eclipse や NetBeans などの IDE を使用して、コンパイル エラーや実行時エラーをより適切にデバッグすることができます。

于 2013-06-15T07:07:38.583 に答える