for文を使って配列になっている数字を計算して結果を出すプログラムを作っているのですが様々なサイトや教科書を見ながら組んでいるのですがどうやっても理解できないところがあるので答えを教えてとまでは言いませんがわかりやするといていただけると助かります。
該当のソースコード
コード
public class Question01 {
public static void main(String[] args) {
System.out.println(sum(1, 10));
System.out.println(sum(-5, 10));
System.out.println(sum(10, 20));
}
private static int sum(int start, int end) {
for(int i=0;i<sum.lenght;i++){
//処理がわからない
}
}
}
試したこと
4~6段目までのsum()と9段目の(int start,int end)が関連付いていることはわかるのですがここからforですぐにループさせて計算させた方がいいのか、それとも(int start,int end)をなにか別の型に変換して解いていった方がいいのかわかりません。
追記
LouiS0616さんに助言いただきましたことを試しに自分なりにコードを組んでみたのですが今度はシンボルが見つかりませんとなってしまいました...
public class Question01 {
public static void main(String[] args) {
System.out.println(sum(1, 10));
System.out.println(sum(-5, 10));
System.out.println(sum(10, 20));
}
private static int sum(int start, int end) {
int total;
total = 0;
for(int i=0;i<sum.length;i++){
total +=i;
}
return total;
}
}
エラーコード
Question01.java:12 シンボルを見つけられません。
シンボル: 変数 sum
場所: Question01のクラス
for(int i=0;i<sum.length;i++){
sumになにかしらダメなところがあるのは理解しているのですが、何がだめでどう改善するとエラーじゃなくなるのかがわかりません
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
+4
sumメソッドの中身に問題ありです。
単にstartからendまでカウンタを回して、値を足していけば良いです。
private static int sum(int start, int end) {
totalを宣言、0で初期化;
for(iをスタートからエンドまで回す) {
totalにiを足す;
}
return total;
}
追記を受けて
逆になぜsum.lengthで巡回できると思ったのかお聞きしたいです。
それは配列の長さの属性で、配列自体が存在しないのに使えるはずがないのです。
for文の最も基本的な書き方を復習してください。
コードの書き方について
teratailには、上記のようにコードを見やすく表示する機能があります。
質問編集画面を開き、コードを選択した状態で<code>ボタンを押してください。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
checkベストアンサー
+1
戻り値である変数sumにfor文で回す変数iをすべて足してあげます。
public class Sum {
public static void main(String[] args) {
System.out.println(sum(1, 10));
System.out.println(sum(-5, 10));
System.out.println(sum(10, 20));
}
private static int sum(int start, int end)
{
int sum = 0;
for(int i = start; i <= end;i++){
sum += i;
}
return sum;
}
}
出力結果
55
40
165
<追記> メソッドを戻り値なしのvoidの形で書く方法です。
public class Sum {
public static void main(String[] args) {
sum(1, 10);
sum(-5, 10);
sum(10, 20);
}
private static void sum(int start, int end)
{
int sum = 0;
for(int i = start; i <= end;i++){
sum += i;
}
System.out.println(sum);
}
}
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.23%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
m.ts10806
2018/04/18 12:46
プログラムコード(およびエラーメッセージ)は```で囲ってください。(わからなければ質問編集画面でコード部分を選択し<code>ボタンを押してください)正しく反映されているかどうかは質問編集画面のプレビューを見ながら編集していってください。