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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Java

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

Q&A

解決済

1回答

2531閲覧

6人の科目の(国語・数学)の点数を読み込んで、科目ごとの平均点、学生ごとの平均点を求めたい

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Java

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

1グッド

1クリップ

投稿2020/04/04 03:12

編集2020/04/04 06:56

このコードだとエラーが起きます
sum_studentとsum_subjectの部分が間違ってるのはわかるのですが
どう書いたらいいのかわかりません
教えてくれるとありがたいです

下がjavaの元のコードです

Java

1import java.util.Scanner 2 3class PointTotalization { 4 5 public static void main (String[] args) { 6 Scanner stdIn = new Scanner(System.in); 7 final int NINZU = 6; 8 int[][] point = new int[NINZU][2]; 9 int[] sumStudent = new int[NINZU]; 10 int[] sumSubject = new int[2]; 11 12 System.out.printf("%d人の国語・数学の点数を入力せよ。\n", NINZU); 13 14 for (int i = 0; i < NINZU; i++) { 15 System.out.printf("%2d番...国語:", i + 1); 16 point[i][0] = stdIn.nextInt(); 17 System.out.print(" 数学"); 18 point[i][1] = stdIn.nextInt(); 19 20 sumStudent[i] = point[i][0] + point[i][1]; 21 sumSubject[0] += point[i][0]; 22 sumSubject[1] += point[i][1]; 23 } 24 25 System.out.println("No. 国語 数学 平均"); 26 for (int i = 0; i < NINZU; i++) 27 System.out.printf("%2d%6d%6d%6.1f\n", i + 1, point[i][0], point[i][1],(double)sumStudent[i] / 2); 28 System.out.printf("平均%6.1f%6.1f\n", (double)sumSubject[0] / NINZU, (double)sumSubject[1] / NINZU) 29 } 30}

これが僕が書いたRubyのコードです

エラーは文はこちらです
<class:PointTotalization>': undefined method +' for nil:NilClass (NoMethodError)

Ruby

1class PointTotalization 2 3 NINZU = 6 4 point = Array.new(NINZU).map{Array.new(2)} 5 sum_student = [NINZU] 6 sum_subject = [2] 7 8 printf("%d人の国語・数学の点数を入力せよ。\n", NINZU) 9 10 i = 0 11 while i < NINZU 12 printf("%2d番...国語:", i + 1) 13 point[i][0] = gets.to_i 14 print " 数学:" 15 point[i][1] = gets.to_i 16 17 sum_student[i] = point[i][0] + point[i][1] 18 sum_subject[0] += point[i][0] 19 sum_subject[1] += point[i][1] 20 i += 1 21 end 22 23 puts "No. 国語 数学 平均" 24 i = 0 25 while i < NINZU 26 printf("%2d%6d%6d%6.1f\n", i + 1, point[i][0], point[i][1], sum_student[i].to_f / 2) 27 i += 1 28 end 29 printf("平均%6.1f%6.1f\n", sum_subject[0]/NINZU, sum_subject[1]/NINZU) 30end 31

とりあえず平均だけだそうと思ったのですが、
class:PointTotalization': undefined method `+' for nil:NilClass (NoMethodError)
となってしまいました
追記sum_kokugo sum_mathが数値型ではなかったため起きたエラーでした

Ruby

1class PointTotalization 2 puts "6人の国語・数学の点数を入力せよ" 3 #point = Array.new(2) 4 #kokugo = point[0] 5 #math = point[1] 6 i = 0 7 while i < 7 8 print "#{i+1}番...国語:" 9 kokugo = gets.to_i 10 print " 数学:" 11 math = gets.to_i 12 sum_kokugo += kokugo 13 sum_math += math 14 end 15 puts "平均 #{sum_kokugo/6} #{sum_math/6}" 16end

こうしたらちゃんと動きました

Ruby

1class PointTotalization 2 puts "6人の国語・数学の点数を入力せよ" 3 i = 0 4 sum_kokugo = 0 5 sum_math = 0 6 while i < 6 7 print "#{i+1}番...国語:" 8 kokugo = gets.to_i 9 print " 数学:" 10 math = gets.to_i 11 sum_kokugo += kokugo 12 sum_math += math 13 i += 1 14 end 15 puts "平均 #{sum_kokugo/6} #{sum_math/6}" 16end
DrqYuto👍を押しています

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

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

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

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

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

maisumakun

2020/04/04 03:15

どのようなエラー発生しましたか? あと、「Java」はどのように関係しますか?
m.ts10806

2020/04/04 03:17

Javaとの関係性を記載願います。
退会済みユーザー

退会済みユーザー

2020/04/04 03:19

javaのコードをrubyで書き換えるということをしているため書きましたm(_ _)m エラーの内容やjavaの元のコードは後で追記いたします汗汗(追加修正するのは私用で3時間後ほどになります、、、)汗汗
m.ts10806

2020/04/04 03:28

言語違うのであれば、いったん元の言語のコードは忘れた方が良いかと。 要件さえきちんとしてれば別の言語のコードなどむしろ邪魔です。
退会済みユーザー

退会済みユーザー

2020/04/04 03:31

確かにです、、、 ありがとうです????
退会済みユーザー

退会済みユーザー

2020/04/04 04:09

配列じゃなくてもいいかもしれないですね
退会済みユーザー

退会済みユーザー

2020/04/04 04:11

%d、%2d等は別に使わなくていいですね printf使わなくていいですね
guest

回答1

0

ベストアンサー

Ruby

1class PointTotalization 2 3 student_ave = [] 4 student_kokugo = [] 5 student_math = [] 6 puts("6人の国語・数学の点数を入力せよ。") 7 8 i = 0 9 sum_kokugo = 0 10 sum_math = 0 11 while i < 6 12 print("#{i + 1}番...国語:") 13 kokugo = gets.to_i 14 print " 数学:" 15 math = gets.to_i 16 student_ave << (kokugo+math)/2 17 student_kokugo << kokugo 18 student_math << math 19 sum_kokugo += kokugo 20 sum_math += math 21 i += 1 22 end 23 puts "No. 国語 数学 平均" 24 i = 0 25 while i < 6 26 puts "#{i+1} #{student_kokugo[i]} #{student_math[i]} #{student_ave[i]}" 27 i += 1 28 end 29 puts "平均 #{sum_kokugo/6} #{sum_math/6}" 30end

これで行けました!

投稿2020/04/04 11:58

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問