arrow_back

数値を計算する

「さぁ、休憩もしたし、お菓子も食べたよ。それじゃいよいよ」
「Zzzz...」
「」
「いたたたた! こめかみを! こめかみをぐりぐりするのはやめて!」
「起きた? それじゃあ、数値の計算していこう。String.valueOfの中に 1 + 1って書いて。1+1の足し算は、ハルキの寝ぼけた頭でもわかるよね」
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView textView = (TextView) findViewById(R.id.textview);
        textView.setText(String.valueOf(1 + 1));
    }
「もー、ひどいよ杏ちゃん。食後に眠くなるのは生理現象なのに……それに、いくら私でも1+1くらいわかるよ。 ほら。2になったよ」
「ここで大事なのは、プログラムの中に書いた数式がきちんと計算されて出てきたってこと。 こんな風に、数値であればプログラム中で計算ができる」

演算子

「1+1の+演算子っていうよ。 Java言語では演算子として他にもいろいろある。 基本として四則演算。あと剰余算ってのもあって、これは割った余りを求めるもの」
演算子 解説
+ 足し算
- 引き算
* かけ算
/ 割り算
% 剰余算
「それじゃ試しに1 / 0をやってみてごらん」
「えーっと、1割る0は……っと、こうかな?」
textView.setText(String.valueOf(1 / 0));
「あ、またエラーになっちゃったよ!」
「うんうん。これはエラーになるのが正常だから大丈夫」
「OKボタンがあるけど、これ押しちゃっていいの? 私としては、ぜんぜんOKじゃないんだけど……」
「確かにちょっと不親切だけど、普通に使ってるだけの人にいろいろ情報を見せても混乱するからね。 エラーの内容はログにちゃんと出てるから、今から確認してみよう」

ログの確認

「AndroidのログはAndroid Studioの画面下に表示されてるよ」
「なにかずっと動いてるなと思ってたんだけど、それがエラーだったの?」
「ログはエラーだけとは限らないよ。他のアプリからのログも全部一度に表示されるから、 フィルターしてみた方がいいね」
「このLog levelはログの重要度を表しているから、これ変えれば、指定した重要度より上のログだけが表示されるし、 その隣にキーワードを入力すれば、キーワードがあるログだけが出てくるよ」
ログレベル(重要度順)
Error
Warn
Info
Debug
Verbose
「エラーにしたら、赤い文字だけになったけど、やっぱりいっぱいあってよくわからないよ……」
「そういう時にはキーワードで絞り込む。 今回はMainActivityでエラーが起こったわけだからMainActivityと入力してみて」
09-20 15:51:51.132    3554-3554/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: io.keiji.myapplication, PID: 3554
    java.lang.RuntimeException: Unable to start activity ComponentInfo{org.example.myapplication./org.example.myapplication.MainActivity}: java.lang.ArithmeticException: divide by zero
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
            at android.app.ActivityThread.access$800(ActivityThread.java:144)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
     Caused by: java.lang.ArithmeticException: divide by zero
            at org.example.myapplication.MainActivity.onCreate(MainActivity.java:17)
            at android.app.Activity.performCreate(Activity.java:5937)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
            at android.app.ActivityThread.access$800(ActivityThread.java:144)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
「ほら、ここにjava.lang.ArithmeticException: divide by zeroって書いてある。 0で割ったから起こったエラーで、MainActivity.javaの17行目で起きた。までわかるよ」
1 / 0のところだね。けど、なんで0で割ってはいけないの?」
「それは数学の話になるからここでは触れないけど、ともかくJava言語では整数型を0で割る。 0除算はエラーと言うことになってるから覚えておいてね」
「わかってて0で割るって、杏ちゃんも案外、ワルだねぇ」
「むっ。エラーになったときにどうやって対処するかを教えようと思ったの。 原因とかわからないまま、慌ててるだけじゃ、ぜんぜん解決できないでしょ!」
「いたたたた! こめかみを! こめかみをぐりぐりするのはやめて!」
最終更新日: 2015/09/03