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

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

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

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

Q&A

解決済

1回答

2341閲覧

javaについて

java9981

総合スコア11

Java

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

0グッド

0クリップ

投稿2016/11/21 08:24

編集2016/11/21 08:26

javaについて質問です。情報処理検定第53回のプログラミング部門1級のjavaの問題をやっているんですけど、そのjavaに平均値を追加したいです。どのように追加すれば良いのでしょうか?

###該当のソースコード
//クラスSportsDay
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class SportsDay {
private static String[] name = {"", "玉入れ", "二人三脚", "徒競走", "騎馬戦", "リレー", "棒倒し", "大縄跳び", "総合ポイント"};
private static EventInfo[] event = new EventInfo[9];
public static void main(String[] args) {
try {
for(int i = 1; i <= 8; i++) {
event[i] = new EventInfo(name[i]);
}
BufferedReader fileIn = new BufferedReader(new FileReader("c:\Poi.csv"));
String line;
while((line = fileIn.readLine()) != null) {
String[] str = line.split(",");
int code = Integer.parseInt(str[0]);
int gradeIndex = Integer.parseInt(str[1]);
int classIndex = Integer.parseInt(str[2]);
int point = Integer.parseInt(str[3]);                
event[code].addPoint(gradeIndex, classIndex, point);
event[8].addPoint(gradeIndex, classIndex, point);
}
fileIn.close();
} catch(Exception e) {
System.out.println("エラーが発生しました" + e);
}
Scanner keyboardIn = new Scanner(System.in);
System.out.print("コード(1~8)を入力してください。→");
int code = keyboardIn.nextInt();
while(code != 0) {
if(event[code].getFlag() != 1) {
event[code].sort();
}
event[code].printPoint();
System.out.print("コード(1~8)を入力してください。→");
code = keyboardIn.nextInt();
}
keyboardIn.close();
}
}

//クラスEventInfo
public class EventInfo {
private String name;
private int[][] classNumber = new int[4][7];
private int[][] classPoint = new int[4][7];
private int sortFlag;
public EventInfo(String name) {
this.name = name;
for(int i = 1; i <= 3; i++) {
for(int j = 1; j <= 6; j++) {
classNumber[i][j] = j;
}
}
}
public void addPoint(int i, int j, int point) {
classPoint[i][j] = classPoint[i][j] + point;
}
public int getFlag() {
return sortFlag;
}
public void sort() {
for(int i = 1; i <= 3; i++) {
for(int j = 5; j >= 1; j--) {
for(int k = 1; k <= j; k++) {
if(classPoint[i][j] < classPoint[i][k + 1]) {
classNumber[i][0] = classNumber[i][k];
classNumber[i][k] = classNumber[i][k + 1];
classNumber[i][k + 1] = classNumber[i][0];
classPoint[i][0] = classPoint[i][k];
classPoint[i][k] = classPoint[i][k + 1];
classPoint[i][k + 1] = classPoint[i][0];
}
}
}
}
sortFlag = 1;
}
public void printPoint() {
System.out.println(name);
System.out.printf("\t1年 \t\t2年 \t\t3年\n");
int[] ranking = new int[4];
for(int i = 1; i <= 6; i++) {
for(int j = 1; j <= 3; j++) {
if(classPoint[j][i] != classPoint[j][i - 1] || i == 1) {
ranking[j] = i;
}
System.out.printf("\t%d位 %d組 %3dポイント", ranking[j], classNumber[j][i], classPoint[j][i]);
}
System.out.println();
}
}
}

###試したこと
http://www.zensho.or.jp/puf/download/exam/pastexam/2015/info_53_1_pro.pdf リンクです。java選択者の問題をやってます。学年の横に平均値追加したいです。どのようにjavaに加えれば良いのでしょうか?

###補足情報
java初心者です。出来れば分かりやすくお願いします。本当によろしくお願いします。

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

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

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

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

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

coco_bauer

2016/11/21 09:30

「学年の横」って、どこですか? println(name); で競技名を表示、printf("\t1年 \t\t2年 \t\t3年\n"); で学年を横に表示、その下はprintf("\t%d位 %d組 %3dポイント", ranking[j], classNumber[j][i], classPoint[j][i]); で組ごとの順位とポイントが表示されるのでしょ。 「学年の横」って、どこですか?
swordone

2016/11/21 09:35

コードは専用の書き方があります。コードを選択して<code>を押してください。
java9981

2016/11/21 09:37

1年と2年の間に1年の平均値、2年と3年の間に2年の平均値、3年の隣に3年の平均値を表示してほしいです。説明不足ですいません
guest

回答1

0

ベストアンサー

一番上のimportに
import java.text.DecimalFormat;
を追加し

public void printPoint() {
の部分を以下のように書き換えるとできないでしょうか

java

1 2public void printPoint() { 3System.out.println(name); 4 5DecimalFormat m=new DecimalFormat("###.##"); 6int ave1=0; 7int ave2=0; 8int ave3=0; 9 10for(int i=0;i<6;i++){ 11 12ave1+=classPoint[1][i+1]; 13ave2+=classPoint[2][i+1]; 14ave3+=classPoint[3][i+1]; 15 16 17} 18 19 20 21System.out.printf("\t1年"+m.format((double)(ave1/6))+"\t\t2年"+m.format((double)(ave2/6))+"\t\t3年\n"+m.format((double)(ave3/6))); 22int[] ranking = new int[4]; 23for(int i = 1; i <= 6; i++) { 24for(int j = 1; j <= 3; j++) { 25if(classPoint[j][i] != classPoint[j][i - 1] || i == 1) { 26ranking[j] = i; 27} 28System.out.printf("\t%d位 %d組 %3dポイント", ranking[j], classNumber[j][i], classPoint[j][i]); 29} 30System.out.println(); 31} 32}

投稿2016/11/21 08:41

編集2016/11/21 08:51
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問