2010年12月16日木曜日

[覚え書き]Javaで初項1、等差1の等差数列の和を求める

Java(≠JavaScript)で、while文を使って等差数列(初項1、等差1)の和を出すプログラムを書きたい(Eclipse使ってる)んだけど、どう書いてもエラーになる。。。わからん。。。less than a minute ago via web



というアレで、大学の情報の授業の課題がどうしても出来なかったのだけど(ヽ(°▽、°)ノエヘヘヘヘ)、いろいろな人に聞いてなんとか出来た!メモ的に記録!

問い:
for文もしくはwhile文を用いて、1から入力された値までの和を出力するプログラムを書きましょう。
実行結果:
=====
値を入力してください。
10
1から10までの和は、55です。
=====
最初に僕が書いたコードはこんな感じ:
=====
import java.io.*;

public class Sum_n {
/**
* @param args
*/
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader (new InputStreamReader (System.in));
System.out.println("値を入力してください。");
String str1 = br.readLine();
int n = Integer.parseInt(str1);
while(i<=n){
int total = 0;
int total = total + i;
i=i++;
}
System.out.println("1から" + n + "までの和は、" + total + "です。");
}
}
=====
これ、変数totalをループの中で宣言・初期化しているし、変数iに至っては宣言もしていなければ初期化もしていない(と先輩(@a_suenamiさん)に教えていただいた。

そこで@a_suenami先輩に直していただいたコード:
=====
import java.io.*;

public class Sum_n {

/**
* @param args
*/
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader (new InputStreamReader (System.in));
System.out.println("値を入力してください。");
String str1 = br.readLine();
int n = Integer.parseInt(str1);
int i = 1;
int total = 0;
while(i<=n){
total = total + i;
i++;
}
System.out.println("1から" + n + "までの和は、" + total + "です。");
}

}
=====
というわけで、iとtotalをループの外で宣言・初期化して、なんとかばっちり動きました。よかったー。

0 件のコメント:

コメントを投稿