引数違いのsumメソッドを別に作らない状態で、
int sum(List<Integer> list1)をmainメソッドでコールして
1~1000の数値も計算できるようにしたいです。
分からないところは、コメントに書いております。
public class Exercise6 { public static void main(String[] args) { /** * 例題実行確認 * * @param args コマンドライン引数 * * 課題内容 数値のリスト(java.util.List)を受け取って、その合計を返すメソッド「sum」を作成してください。 * sumメソッドを使用して、以下の問題を解いてください。 ・以下の値を要素とするリストの合計を求める 25 9 11 74 36 52 7 19 * ・1から1000までの合計を求める <クラス・メソッド作成> ・リストの合計を求める「sum」メソッドを作成してください。 * ・sumメソッドはメインメソッドから呼び出してください。 <仕様> ・結果として、「■ 出力例」に記載の内容を表示する * * ■ 出力例 数値リスト[25 9 11 74 36 52 7 19]の合計 : 233 1から1000の合計 : 500500 * * * */ List<Integer> list1 = new ArrayList<>(Arrays.asList(25, 9, 11, 74, 36, 52, 7, 19)); System.out.println("数値リスト[25 9 11 74 36 52 7 19]の合計 : " + sum(list1)); //本来なら、下記の1から1000の合計を求める式もsumメソッドに書きたいところだが、returnだと一つしか値を返せないため、mainに式を書いている。 int calc = 0; for (int j = 0; j <= 1000; j++) { calc += j; } System.out.println("1から1000の合計 : " + calc); } private static int sum(List<Integer> list1) { int total = 0; for (int i = 0; i < list1.size(); i++) { total += list1.get(i); } return total; // ここでint型のtotalの値を、mainメソッドに返している } }
(読み間違えたようなので伏せる)
mainの戻り値がvoidなので戻り値はなにもありません。
まぁ確かに、読んだ者には質問件名とやりたいことが一致していないように読めますね。
sum()メソッドはできている(ように見える)のですから、list1に1から1000の値を入れて呼べば良いのではないですか。ArrayListクラスの使い方が分からないというような質問に読めます。
>returnだと一つしか値を返せないため、mainに式を書いている。
ってあるので関数は一回しか呼べないと思っているのかも
>ozwkさん
まさしく、その通りでございます。
知識不足で大変お恥ずかしいです。。。
そんでもって1から1000をList1に入れるというアドバイスもありましたが、
まさか1から1000をいちいち書いていくってわけではありませんよね、、、?
一個ずつ書いていく方法しか、思いつかなくて、、、
一個ずつ書いてください。
1000 までではなく 3 までで大丈夫です。
それができたら次の段階に進めます。
一応、1,2,3と、3つまで書きました。
次はいかがいたしましょう、、、?
過去のご質問を見ると、以前の方がはるかに難しいことをやっているように見えるのですが、Javaの基本文法や基本的な制御(ifによる分岐とかループとか)は修められていないのでしょうか。
もしかして1から1000を格納したListの作り方が分からないということ?
もしそうであればfor文で1から1000までループして格納すれば良いだけですが。。。
JavaはSilver8を取得しており、基礎的なことはある程度は抑えてはいるのですが、
ことこの問題に関しては、同じsumメソッドで返してほしいという指摘を受け、
どうするべきかと悩みましたので、ご質問させていただいた次第です、、、
> 次はいかがいたしましょう、、、?
書いたのであればそれを実行し、意図通りに動くことを確認してください。
それができたのであれば、数値を一つずつ増やしながら繰り返し処理を行うよう変えてみましょう。
ここまで書いて新しいコメントを読みました。
シルバー取得者?
本当は何につまっているのかを正確に伝えることができていますか?
あれからコードを書き直しましたが、
public static void main(String[] args) {
/**
* 例題実行確認
*
* @param args コマンドライン引数
*
* 課題内容 数値のリスト(java.util.List)を受け取って、その合計を返すメソッド「sum」を作成してください。
* sumメソッドを使用して、以下の問題を解いてください。 ・以下の値を要素とするリストの合計を求める 25 9 11 74 36 52 7 19
* ・1から1000までの合計を求める <クラス・メソッド作成> ・リストの合計を求める「sum」メソッドを作成してください。
* ・sumメソッドはメインメソッドから呼び出してください。 <仕様> ・結果として、「■ 出力例」に記載の内容を表示する
*
* ■ 出力例 数値リスト[25 9 11 74 36 52 7 19]の合計 : 233 1から1000の合計 : 500500
*
*
*/
List<Integer> list = new ArrayList<>(Arrays.asList(25, 9, 11, 74, 36, 52, 7, 19));
System.out.println("数値リスト[25 9 11 74 36 52 7 19]の合計 : " + sum1(list));
System.out.println("1から1000の合計 : " + sum1(list));
}
private static int sum1(List<Integer> list) {
int total = 0;
for (int i = 0; i < list.size(); i++) {
total += list.get(i);
}
int calc = 0;
for (int j = 0; j <= 1000; j++) {
calc += j;
}
return total;
// int型のcalcの値を、mainメソッドに返す
// return calc;(到達不能コードによりエラー)
// int型のtotalの値を、mainメソッドに返す
}
}
と、このように到達不可能のエラーが出てきてしまいます。。。
return total; で終了しているので当然到達不能です。
シルバーというのはブロンズの上ですよね?
はい。上ですね、、、
あれから修正した結果、とりあえず、sumメソッドをintではなくvoidにし、
System.out.printlnで今回のListの中の数字の計算と、1~1000の合計の計算の2種類の答えを出せるよう書き直し、一応の解決が出来ましたので、この場を借りてお知らせします。
> とりあえず、sumメソッドをintではなくvoidにし、
いや、課題自体が「その合計を返すメソッド「sum」を作成してください。」なので、それではダメなのではないでしょうか。あくまで"とりあえず" ですか?
正直、ここでつまづかれているのがとても意外に思えるのですが、プログラミングについては課題をこなすのが主で、自分で書くことはほとんどなかった、というかんじなのでしょうか。(この質問は単なる好奇心でお聞きしているだけです)
プログラミングについては課題をこなしており、自分で自ら書くことはあまりなかったという見解で合っています。知識不足でお恥ずかしいですが、、、
あくまで”とりあえず”の解決なので、teratailの質問は閉め切ろうと思っております。
レスをいただきどうもありがとうございました。承知しました。
回答2件
あなたの回答
tips
プレビュー