🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Java

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

Q&A

2回答

1125閲覧

合計数を表示させたいです。

tomo0122

総合スコア4

Java

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

0グッド

1クリップ

投稿2021/02/24 03:17

編集2021/02/24 10:27

前提・実現したいこと

下記ソースコードで10個の整数をコンソールに打ち込んだところ
平均数は出せたのですが合計数が表示されませんでした。
なぜでしょうか。
参考書通りに行ったのですが。

該当のソースコード

・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
import java.io.Console;

public class ArrayTest2{
public static void main(String[]args)throws Exception{
Console console = System.console();
int[] allScore = new int[10];
for(int i = 0;i < allScore.length; i++){
int inputScore = Integer.parseInt(console.readLine());
allScore[i] = inputScore;
}
int total = 0;
for (int i = 0; i < allScore.length; i++){
total = total + allScore[i];
}
int average = total / allScore.length;
System.out.println(average);
}
}
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

試したこと

参考書の解説を読みましたがそこまで詳しく記載されていなかったため
教えてください。

補足情報(FW/ツールのバージョンなど)

Windows10を使用

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

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

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

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

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

y_waiwai

2021/02/24 03:23

どういうふうになるんでしょうか。 そこんところを説明しましょう
dodox86

2021/02/24 03:24

> javaコマンドで実行すると > 10 > 20 > 30と表示される。 質問文中に提示のコードとは明らかに違うプログラムを実行しています。再度、参考書を確認してください。質問文中に提示のコードは(私の方では動作確認してませんが)「ユーザーにコンソールで点数を10回入力させて、その合計、平均を計算するコード」のまんまです。
tomo0122

2021/02/24 03:32

分かりずらく申し訳ございません。 おっしゃる通り私も「ユーザーにコンソールで点数を10回入力させて、その合計、平均を計算するコード」の認識です。イメージとしましてはコンソールに「10回入力」「10+10+10+10+10+10+10+10+10+10」=100(合計)、平均は10を表示される認識です。 ですが、上記のソースコードを処理しようとすると下記表示がコンソールに表示されてしまいます。 10 20 30 なぜでしょうか。というご質問となります。 改めてご回答宜しくお願い致します。
dodox86

2021/02/24 03:35

「上記のソースコードを処理」とはどのような手順を言われていますか。ちなみに提示のコードはコンパイルエラーで実行できません。
dodox86

2021/02/24 03:37

10...20...30 と出力するArrayTest.java を最初に作ってコンパイルして*.classファイルが残ったまま、ファイル名、クラス名を同じに上記の提示コードを入れただけでコンパイルせず、そのままとか。
tomo0122

2021/02/24 03:56

メモ帳でソースコードを入力し 「コマンドプロンプト」でjavacコマンドでファイル名を「.class」にしたのちjavaコマンドで 実行しております。
dodox86

2021/02/24 04:00

再度書きますが、提示のコードはコンパイルエラーで実行できません。コマンドプロンプト上でJavacコマンドでコンパイルする前に、typeコマンドでそのソースファイルを出力して確認してください。 C> type ファイル名 [ENTERキー押下] です。("C>"の入力は不要です)
tomo0122

2021/02/24 04:11

了解しました。 ありがとうございます。 ソースコードに誤りがないか確認して またご連絡させていただきます。 ただ、私がやるとコンパイルエラーにはならないのが ちょっと気がかりですが。
m.ts10806

2021/02/24 04:21

質問は編集できますので。
swordone

2021/02/24 04:24

実行ファイルと編集しているソースコードのファイル名が一致しているか確認してください。
退会済みユーザー

退会済みユーザー

2021/02/24 04:47

> ただ、私がやるとコンパイルエラーにはならないのが ちょっと気がかりですが。 あなたのローカルPCで動くかどうかを突っ込んでいるのではなく、貼られているソースコードが動かないと申しております。 一度、質問文に掲載したソースコードを新規のクラスファイルとして作ってコンパイルしてみてください。 回答者側はあなたのPCを見ているのではなく、【質問文やコメントの情報しか分からなく、それ以外の箇所を経験だったり回答用に調査や検証をしている】と思いますので。 https://paiza.io/projects/vkfvab9sgOh68tiFt6lNFQ ※paizaの制限があるので、クラス名はMainに変更しました。 4: その位置にthrowsは書けない。中かっこが邪魔 6: int型にint型配列を入れようとしてる 9: allScoreなんて変数はない(Javaは大文字小文字を区別する。間違うくらいなら単語をコピペしよう) 13: allScoreなんて変数はない 他: 【```】でソースを括って、さらにインデント直して欲しい。見にくいので。 質問を書いた時のプレビューをよく確認して質問の修正をお願いします。
momon-ga

2021/02/24 05:03

たぶん、コンパイルエラーに気づいてなくて クラスファイルが上書きされなくて、過去に作った処理が実行されてるだけじゃないかな。
dodox86

2021/02/24 10:32

[2021/02/24 19:27]の編集を見て: > 参考書通りに行ったのですが。 参考書を見て、書き写しただけでしょうか。コード1行1行の意味を理解されていますか。 尚、質問の内容自体をいきなり変えるのはちょっとマナー違反です。いただいた回答とかみ合わなくなりますね。
tomo0122

2021/02/24 10:54

上記失礼しました。 次から気を付けます。 コードにつきましても具体的な解説がないので正直理解はできていない状況です。 もしよろしければ、処理される順番やコードの意味をご教示いただくことは 出来ませんでしょうか。 宜しくお願い致します。
dodox86

2021/02/24 11:54

> もしよろしければ、処理される順番やコードの意味をご教示いただくことは出来ませんでしょうか。 悪いことを言いませんので、まずWEBを検索するなりしてJavaの基本の文法を習うことを強くお勧めします。学ぶ順番としてはそれが妥当です。その、読んでいる参考書の前の方にそういった解説は無いのでしょうか。今の状態でコードの説明をしても恐らくちゃんと理解できません。「なるほど、そうですか」と、分かったつもりで終わると思います。 合計数が表示されないのは合計数を表示するコードが無い、そのままなのですが、失礼ながら、基本の文法を抑えていない状況では早すぎます。あくまで答えを知りたい、と言うのであれば、引き続き回答を待てばいただけるかもしれません。私からのコメントは以上です。お役に立てずすみません。
tomo0122

2021/02/24 13:02

ご回答ありがとうございます。 確かにおっしゃるとおりかもしれませんね。 今一度自分で調べてから質問するようにいたします。 この度はお付き合いいただきありがとうございました。
m.ts10806

2021/02/24 22:22

あとそもそもの話、「本の通りすること」を目的としていると大抵このような事態になります。 本来の目的や目標な何でしょうか。コードは誰が書いて誰が動かそうとしているのでしょうか。 本にあるコードが動いているわけではありません。事件は現場で起きています。 現場はまさにあなたの目の前の環境です。 参考書の通りに書いたコードであっても結局コードを打ったのはあなたです。 そういう意味で「自身が書いたコード」を見てください。
guest

回答2

0

最初フローがどうのじゃなかったっけか…?!
動くコードが貼られたので、新しい方の質問でちょっと回りくどい解説をします。

質問への回答

平均数は出せたのですが合計数が表示されませんでした。

なぜでしょうか。

平均数を出すように処理を書いたが、合計数を出すようには書いていない為です。

当たり前じゃんって思うかもしれませんが、そう思っていないからこそこういう疑問が出るのだと思います。(理解はするけど納得していない状態とでも言いましょうか…)
プログラムは書いたとおりにしか動かないので、目の前で起こっている事が真実です。

参考書の通りに動かないと仰せなら、参考書通りの実装が出来ていないだけですし、
思った通りに動かないと仰せなら、大半は思った通りの実装が出来ていないだけな訳です。

起こった事実を受け入れて、次に対策を練りましょう。

hello, world

では、目的を達成する為にはどうするか。表示処理ですね。
表示と言えばどの参考書にも大抵掲載されているhello, worldですが、Javaの場合は
System.out.println(~)を使っている事が多そうです。

実際にコードを書くならこうなります。

Java

1public class Hoge { 2 public static void main(String[] args) { 3 System.out.println("hello, world"); 4 } 5}

ここまでは良いでしょうか?
つまりSystem.out.println()hello, worldという文字列を表示する為に使ってた関数であると分かります。

合計数を出すには?

では、質問文のコードに話を戻します。
まず平均数を表示出している行はどこでしょうか。ここですね。
さらに変数averageに平均数の計算結果が入っていたわけですね。

Java

1int average = total / allScore.length; 2System.out.println(average);

合計数の出力だって同じやり方で出力できます。
では合計数はどの変数に入っていて、どう出力用関数を実行すれば良いですか?

解説は以上になります。

他:【```】でソースを括って、さらにインデント直して欲しい。という指摘について

コードをくくるのは【・】ではなく【```】で括ります。
Windowsならキーボードの【@(アットマーク)】のキーをShiftを押しながらタイプします。Macは知りません。

私の回答の中にこんな感じでソースコードが書いていますが、どっちが見やすいですか?
上がmarkdownのcodeコードフォーマットを使った場合。下は未使用。
これは質問文を編集中にもプレビューとして確認できたはずです。

Java

1public static void main(String[] args) { 2 int count = 0; 3 for (int i = 0; i < 10; i++) { 4 int v = (int) Math.floor(Math.random() * 10); 5 if (v < 5) { 6 count++; 7 } 8 } 9 System.out.println("5以上: " + count + "回 / 5未満: " + (10 - count) + "回"); 10}

public static void main(String[] args) {
int count = 0;
for (int i = 0; i < 10; i++) {
int v = (int) Math.floor(Math.random() * 10);
if (v < 5) {
count++;
}
}
System.out.println("5以上: " + count + "回 / 5未満: " + (10 - count) + "回");
}

長文失礼しました。
頑張ってください。

投稿2021/02/24 20:27

編集2021/02/24 20:32
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

momon-ga

2021/02/25 02:16 編集

> 私の回答の中にこんな感じでソースコードが書いていますが、どっちが見やすいですか? 初心者プログラマは「きれいなものと汚いものの区別がつかない」のです。 https://web.archive.org/web/20190723080235/http://local.joelonsoftware.com/wiki/%E9%96%93%E9%81%95%E3%81%A3%E3%81%9F%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AF%E9%96%93%E9%81%95%E3%81%A3%E3%81%A6%E8%A6%8B%E3%81%88%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B
退会済みユーザー

退会済みユーザー

2021/02/26 10:35 編集

あ、自分へのコメントなんですね。 最初に区別がつかないのは構わないのですが、改善しようとする気持ちがない人は初心者じゃなくて、堕落者ですね。初心忘るべからずの初心って初心者が持っている心得でしょうし。 パン工場が出来たばかりの姿を知っている者が果たして当時の綺麗さを思い出せるのか否か。 感覚がマヒしてこれでも綺麗だって話ならこのパン工場のベテランも大した事ないと思いました。 古くてもメンテナンスが行き届いて綺麗なものと、そうでないものは分かりますし、 パンを買う客がベテランがこの工場は綺麗だといっても、客目線でそういう現場を見られてそうはいっても汚いじゃんと思ったらパンは売れない訳で。。。 うーん、何を言っているか分からなくなってきました。 書いてある事はところどころ同意するのですが、妙な例え話が入ると混乱して自分に自信が持てなくなるので止めておきます。 せっかく紹介してくださったのですが申し訳ありませんが、活用できそうにありません。すみません。
guest

0

そもそもですが、提示のコードではカッコの数が合わないので、コンパイルエラーになりますよ
実行できません

投稿2021/02/24 03:41

y_waiwai

総合スコア88040

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問