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

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

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

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

Q&A

解決済

1回答

351閲覧

うまくいくときと行かない時が出てしまう

rink

総合スコア80

Java

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

0グッド

0クリップ

投稿2019/01/13 16:45

以下にソースを貼るのですが、うまくいくときとうまくいかない時があります。理由を探っても分かりません。ちなみに新・明解javaという本のp217の問題でもあります。

import java.util.Scanner;
class M6_19{
public static void main(String[] args){
Scanner stdIn = new Scanner(System.in);
int n,i,z;
int u=0;
int j;
int sum=0;
int total=0;
int ninzu=0;

System.out.print("クラス数:"); n=stdIn.nextInt(); int[][] a = new int[n][]; for(i=0;i<n;i++){ System.out.printf("\n%d組の人数",i+1); u = stdIn.nextInt(); a[i] = new int[u];//a[0]は一組の点数の箱 ninzu += u; for(z=0;z<u;z++){ System.out.printf("%d組%d番の点数",i+1,z+1); a[i][z]=stdIn.nextInt(); } } System.out.println(" 組 | 合計  平均"); System.out.println("-----+---------------"); //合計 for(i=0;i<n;i++){ for(z=0;z<u;z++){ sum += a[i][z]; } total += sum; System.out.printf("%2d組|%7d%7.1f\n",i+1,sum,(double)sum/u); sum=0; } System.out.println("-----+---------------"); System.out.printf(" 計 |%7d%7.1f\n",total,(double)total/ninzu);

}
}

実行すると、
クラス数:2

1組の人数3
1組1番の点数50
1組2番の点数63
1組3番の点数72

2組の人数2
2組1番の点数79
2組2番の点数43
組 | 合計  平均
-----+---------------
1組| 113 56.5
2組| 122 61.0
-----+---------------
計 | 235 47.0
のように、1組の合計が最後まで足されない状況になってしまいます。どこでおかしくなってしまうのでしょうか?よろしくお願いいたします。
あと、Markdown記法の使い方が分かりません。

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

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

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

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

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

guest

回答1

0

ベストアンサー

二組のデータを入力したときに、変数uの値が上書きされています。
次の部分を変更すれば良いでしょう。

Java

//合計
for(i=0;i<n;i++){
for(z=0;z<u;z++){

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

Java

1//合計 2for(i=0; i<n; i++){ 3 for(z=0; z<a[i].length; z++){

質問の仕方について

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

また、次の情報を明記しましょう。

  • 期待する実行結果
  • 実行時に与えた入力

あと、Markdown記法の使い方が分かりません。

上記の画像のように、グラフィカルに操作する手段が提供されているはずです。
プレビュー画面で調子を確かめながら、文面を埋めていくと良いでしょう。

また、質問テンプレートの利用もご検討ください。

投稿2019/01/13 16:52

編集2019/01/13 16:55
LouiS0616

総合スコア35660

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

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

rink

2019/01/13 16:57

とても丁寧にご回答くださりありがとうございます。おまけに早い回答で助かりました! Markdown記法もとても丁寧に教えてくださりありがとうございます!!!参考にさせていただきます!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問