Java “超”初心者が犯しやすい7つの過ち
http://journal.mycom.co.jp/news/2008/06/18/041/index.html
に触発されて。
ここのところ、大学で行われてる基礎ソフトウェア演習のTAやってまして、その結果『Java の超がつくほどの初心者が犯しやすい過ち』がだいたい見えてきたかなーという感じです。ということでまとめてみた。
クラス名に "." は使えません
public class Kadai1.1 { public static void main(String[] args) { System.out.println("Hello world!"); } }
問題用紙には「課題1.1」って書いてあるんですよ。
Java のプログラム構造を理解しましょう
クラス Animal を定義し、さらにメソッド barg を定義しなさい。
class Kadai3_2 { public static void main(String[] args) { class Animal { } void barg() { } } }
Java が持つ構造を知らないと簡単に犯してしまう間違いですね。
メソッドの中に直接メソッドを書いてしまう人は、少なくとも10人はいました。
上から順に実行されます
「どうやって書けばいいんだろう」を「自分のやりたいことを考える」よりも前に考えてしまうんでしょうか。
public static void main(String[] args) { String input = iotool.Console.readLine(); System.out.println("一行入力してください:"); }
この誤りは非常に多かったです。
メソッド定義と呼び出しは違いますよ
よく、Java の参考書とかに書いてありますよね。
java.lang.Math のメソッド: int abs(int x)
java やったことがあるとこれだけですんなり理解できるんですが、超初心者たちは、みんながみんな
public static void main(String[] args) { int x = iotool.Console.readInteger(); int abs(int x) }
って書くんですが、それは無理です。
public static void main(String[] args) { int x = iotool.Console.readInteger(); public static int abs(int x) }
ここまで書いた人もいた。
メソッド定義と呼び出しは違いますよその2
こんな人がいました。
class Kadai3_2 { public static void main(String[] args) { System.out.println("一行入力してください:"); String input = iotool.Console.readLine(); } void print(String input) { System.out.println("入力された文字列は:" + input); } }
メソッドは定義されただけでは実行されません。ちゃんとメソッドを呼び出してあげてください。
メソッド定義と呼び出しは違いますよその3
度肝を抜かれたのが、この間違い。
class Kadai5_3 { public static void main(String[] args) { Fraction f = new Fraction(3, 4); int x = gcd(f.n, f.d); f.n = f.n / x; f.d = f.d / x; System.out.println(f); } static int gcd(int f.n, int f.d) { if (f.d == 0) return f.n; else return gcd(f.d, f.n % f.d); } }
サンプルコードとかで同じ名前の変数が色んな箇所に登場すると、みんな同じ変数だと思っちゃうようです。
代入文と変数定義は違いますよ
class Kadai3_3 { public static void main(String[] args) { int a = iotool.Console.readInteger(); String moji; if (a % 100 == 0) { String moji = "100で割り切れます"; } else { String moji = "100で割り切れません"; } System.out.println(moji); } }
変数定義のフレーズだけ覚えていると、代入文がかけなくなっちゃうみたいです。