1

最後のprintステートメントで、次のプログラムで非常に単純なエラーに直面しています。しかし、その背後にある正確な理由はわかりません。論理も正しく、構文も正しいです。

エラーの正確な理由を教えてください。

ありがとう

import java.util.Scanner;
public class main
{
    public static void main(String args[])
    {
        int c,d;
        Scanner s = new Scanner(System.in);
        System.out.print("Enter the first number : ");
        c = s.nextInt();
        System.out.print("Enter the second number : ");
        d = s.nextInt();

        System.out.println("The sub is : "+ c-d);

    }
}
4

3 に答える 3

3

減算の前後に括弧が必要です。

System.out.println("The sub is : " + (c - d));

これは、括弧がない場合、+-演算子は同じ優先順位を持ち、左から右に関連付けられるためです。したがって、コンパイラは、それが記述されているかのように解析しようとします。

System.out.println(("The sub is : " + c) - d);

最初の部分は大丈夫で、String結果を生成する式です。残念ながら、-左側がaStringで右側が。である式に演算子を適用する方法はありませんint

于 2012-12-24T22:45:44.793 に答える
2

これは、最初のオペランドが文字列であるため、文字列の連結を実行しようとしているためです。

これを試して:

System.out.println("The sub is : "+ (c-d));

(cd)が括弧で囲まれていることに注意してください。

コンパイラは、-演算子がstringとintに対して未定義であると文句を言います。

演算子-は引数タイプに対して未定義ですString、int

結果は文字列になることに注意してくださいSub is:+ c。今

`Sub is:+ c` - d;
^^String     - int
于 2012-12-24T22:45:35.980 に答える
0

使用する

System.out.println("The sub is : "+ (c-d));

それ以外の

System.out.println("The sub is : "+ c-d);

そして、それが今機能しているかどうかを確認します。

于 2012-12-24T22:45:53.960 に答える