練習問題〜解答編
解答編。ちなみに問題といてから教科書の解答ミテナイ(´・ω・`)
変なところがあったり、もっと簡潔に書けるところがあったら教えてください。
問1.
public class May10n1 { public static void main(String[] args) { for(int i=1; i<=10; i++){ if(i%2 != 0) continue; System.out.println(i); } } }
問2.
import java.io.*; public class May10n2 { public static void main(String[] args) throws IOException { System.out.println("数値の合計を出力します。(0を入力すると終了)"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int num = 0; int sum = 0; do{ String str = br.readLine(); num = Integer.parseInt(str); sum += num; }while(num != 0); System.out.println("合計は"+sum); } }
問3.
public class May10n3 { public static void main(String[] args) { int i,j; for(i=1; i<=9; i++){ for(j=1; j<=9; j++){ System.out.print(i*j+"\t"); } System.out.print("\n"); } } }
問4.
public class May10n4 { public static void main(String[] args) { int i,j; for(i=1; i<=5; i++){ for(j=0; j<i; j++){ System.out.print("*"); } System.out.println("\n"); } } }
問5.
import java.io.*; public class May10n6 { public static void main(String[] args) throws IOException { System.out.println("2以上の整数を入力してください。"); BufferedReader br= new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int num = Integer.parseInt(str); for(int i=2; i<=num; i++){ if(i == num){ System.out.println(num+"は素数です。"); } else if(num%i==0){ System.out.println(num+"は素数ではありません。"); break; } } } }
ちなみに問5では最初はこういう失敗をしてしまいました。
if(num%2==0&&num!=2){ System.out.println(num+"は素数ではありません。"); } else if(num%3==0&&num!=3){ System.out.println(num+"は素数ではありません。"); } else if(num%5==0&&num!=5){ System.out.println(num+"は素数ではありません。"); } else if(num%7==0&&num!=7){ System.out.println(num+"は素数ではありません。"); } else{ System.out.println(num+"は素数です。"); }
初心者まるだしの力技コード乙^^;なんというか・・・、しらみつぶしに素数を探す気か?と、今振り返ってみるとそう思います。でもこのコードだと529を素数と判定してしまうという失敗作なんですね・・・(529=23*23)。
それと比べるとちゃんとできた方のコードはもっと簡潔でエレガント。プログラムをやってて初めてエレガントなプログラムというものを知ることができた気がする。まあエレガントといっても失敗プログラムに比べてというところなんですけど。それでもやっぱり簡潔ですっきりしたプログラムは綺麗だね。
*シンタックス・ハイライトデキタ\(^o^)/