質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

295閲覧

For文を用いた繰り返し構文について

nontan

総合スコア8

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2018/04/18 03:44

編集2018/04/18 04:21

for文を使って配列になっている数字を計算して結果を出すプログラムを作っているのですが様々なサイトや教科書を見ながら組んでいるのですがどうやっても理解できないところがあるので答えを教えてとまでは言いませんがわかりやするといていただけると助かります。

該当のソースコード

java

1コード 2 3public class Question01 { 4 5 public static void main(String[] args) { 6 System.out.println(sum(1, 10)); 7 System.out.println(sum(-5, 10)); 8 System.out.println(sum(10, 20)); 9 10 } 11 private static int sum(int start, int end) { 12 for(int i=0;i<sum.lenght;i++){ 13 //処理がわからない 14} 15 16 } 17 18}

試したこと

4~6段目までのsum()と9段目の(int start,int end)が関連付いていることはわかるのですがここからforですぐにループさせて計算させた方がいいのか、それとも(int start,int end)をなにか別の型に変換して解いていった方がいいのかわかりません。

追記

LouiS0616さんに助言いただきましたことを試しに自分なりにコードを組んでみたのですが今度はシンボルが見つかりませんとなってしまいました...

java

1public class Question01 { 2 3 public static void main(String[] args) { 4 System.out.println(sum(1, 10)); 5 System.out.println(sum(-5, 10)); 6 System.out.println(sum(10, 20)); 7 8 } 9 private static int sum(int start, int end) { 10 int total; 11 total = 0; 12 for(int i=0;i<sum.length;i++){ 13 total +=i; 14} 15 return total; 16 17 } 18 19}

###エラーコード
Question01.java:12 シンボルを見つけられません。
シンボル: 変数 sum
場所: Question01のクラス
for(int i=0;i<sum.length;i++){

sumになにかしらダメなところがあるのは理解しているのですが、何がだめでどう改善するとエラーじゃなくなるのかがわかりません

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/04/18 03:46

プログラムコード(およびエラーメッセージ)は```で囲ってください。(わからなければ質問編集画面でコード部分を選択し<code>ボタンを押してください)正しく反映されているかどうかは質問編集画面のプレビューを見ながら編集していってください。
guest

回答2

0

sumメソッドの中身に問題ありです。
単にstartからendまでカウンタを回して、値を足していけば良いです。

Java

1private static int sum(int start, int end) { 2 totalを宣言、0で初期化; 3 for(iをスタートからエンドまで回す) { 4 totalにiを足す; 5 } 6 return total; 7}

追記を受けて

逆になぜsum.lengthで巡回できると思ったのかお聞きしたいです。
それは配列の長さの属性で、配列自体が存在しないのに使えるはずがないのです。

for文の最も基本的な書き方を復習してください。

コードの書き方について

teratailには、上記のようにコードを見やすく表示する機能があります。
質問編集画面を開き、コードを選択した状態で<code>ボタンを押してください。
Java

投稿2018/04/18 03:48

編集2018/04/18 04:25
LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nontan

2018/04/18 04:29

回答ありがとうございます!私としては4~6段目のsum()のところを配列と勘違いして解釈していたもので、それでできるかなと思い込んでいました・・・ わかりやすいご指摘ありがとうございます!
LouiS0616

2018/04/18 04:31

その部分はメソッドの呼び出しをしている部分ですね。 変数やメソッドに対する基礎的な知識が不足しているようですので、丁寧に復習するようにしてくださいね。
nontan

2018/04/18 04:33

わかりました!復讐する箇所まで教えていただきありがとうございます! しっかり勉強させてもらいます!
guest

0

ベストアンサー

戻り値である変数sumにfor文で回す変数iをすべて足してあげます。

Java

1public class Sum { 2 3 public static void main(String[] args) { 4 System.out.println(sum(1, 10)); 5 System.out.println(sum(-5, 10)); 6 System.out.println(sum(10, 20)); 7 8 } 9 private static int sum(int start, int end) 10 { 11 int sum = 0; 12 for(int i = start; i <= end;i++){ 13 sum += i; 14 } 15 16 return sum; 17 } 18}

出力結果

55
40
165

<追記> メソッドを戻り値なしのvoidの形で書く方法です。

Java

1public class Sum { 2 3 public static void main(String[] args) { 4 sum(1, 10); 5 sum(-5, 10); 6 sum(10, 20); 7 8 } 9 private static void sum(int start, int end) 10 { 11 int sum = 0; 12 for(int i = start; i <= end;i++){ 13 sum += i; 14 } 15 16 System.out.println(sum); 17 } 18}

投稿2018/04/18 04:18

編集2018/04/18 04:33
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nontan

2018/04/18 04:26

ありがとうございます!すごくすっきりしました! 参考までに教えていただきたいのですが、startとendはint sumの文で数値として認識されていたという解釈で宜しいでしょうか?
退会済みユーザー

退会済みユーザー

2018/04/18 04:29

はい、そうです。 startとendは「int型」のsumというメソッドの引数です。 ですので、sumというメソッドの中で使われる「数値」です。
退会済みユーザー

退会済みユーザー

2018/04/18 04:34 編集

メソッドの戻り値をintではなくvoidにする方法もあります。こちらも載せておきます。
nontan

2018/04/18 04:32

ありがとうございます! これからの勉強の参考になりました!
退会済みユーザー

退会済みユーザー

2018/04/18 04:36

すいません。言い間違えました。 「メソッドの戻り値をintではなくvoidにする方法もあります」ではなく 「メソッドの戻り値がないvoidにする方法もあります」でした。
退会済みユーザー

退会済みユーザー

2018/04/18 04:37

メソッドを戻り値のあるintの形にするか 戻り値のないvoidの形にするかは そのあとの処理によって場合分けが必要です。
退会済みユーザー

退会済みユーザー

2018/04/18 04:38

また、質問欄に書いてある、sum.length()というのは もし、sumという名の配列があったときの要素数です。
nontan

2018/04/18 04:41

別の回答もあるのですね、参考になります! lengthについてはLouiS0616さんのかいとうで理解できました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問