java
1interface MyInter{ 2 public static final int VAL=3; 3 void foo(int s); 4} 5public class Test implements MyInter{ 6 public static void main(String[]args){ 7 int x=5; 8 new Test().foo(++x); 9 } 10 public void foo(int s){ 11 s += VAL + ++s; 12 System.out.prinln("s:"+ s); 13 } 14}
上記の通りに出力したところ、s:16が出力されました。VALはfinalなので、値は変わらずに3ということは理解しております。
出力表示を逆算的に考えたときに、++s;は13となると思います(確信的ではないですが...)。仮に13という数値が正しければ、そこに至る過程を知りたいです。そうでなければ、一から丁寧に教えていただければ、幸いです。
fooに渡しているxは宣言されていないので、コンパイルエラーです。
問題集で確認したところ、コンパイルエラーにはなっていませんでした…
本当に間違えなく実行したコードを貼り付けていますか? と暗に言われているのです……
セミコロンが1箇所足りないようですし、他にも間違いがあります。
確かに、コードを実行したところ、エラーになりました。しかしながら、問題集では選択肢にコンパイルエラーはあるのですが、解答はs:16が記述されております。
「S」も定義がないですね。
こういう感じなんだろうな、と直していくと確かに16が出力されましたね。問題は「S:16が出力されました」と質問に書いたことですね。
セミコロンの修正は完了致しました。他に問題集と異なる箇所はありませんでした。
>こういう感じなんだろうな、と直していくと確かに16が出力されましたね。
具体的に教えてもらうことは可能ですか。
すでに書かれています。(swordoneさんと maisumakunさんが指摘してくれています)
それはx,sが宣言されていないことを意味しますか?
意味しません。Javaでは、sとSは別物です。
小文字にすることを忘れていました。
> System.out.prinln("s:"+ s);
prinln でコンパイルエラーになります。
回答1件
あなたの回答
tips
プレビュー