こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

プログラミングわかんないです(JAVA)

1、5人分の、番号国語の点数、算数の点数を格納できるような、2次元行列を作成する

2、次にキーボードから5人の番号と国語と算数の点数を入力して配列に格納する。

3、次に国語と算数のごうけいが高いものを順に、番号と国語と算数をならびかえる。

4、最後に合計の高い順に番号を画面に出力する

投稿日時 - 2013-10-05 20:15:55

QNo.8293186

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

main() の定義に public static void main(String[] args) throws IOException {
って感じで IOEXception を明示すればどうですか。

投稿日時 - 2013-10-07 05:26:15

補足

合計が高いもの順にがめんに出力なのに合計が低いじゅんになってますよ??勘違いだったらすいません

投稿日時 - 2013-10-07 09:40:44

ANo.2

便利なクラスや例外、関数を使わないと、すごく長くなります。
main() メソッドの中で、選択ソート (selection sort) という
アルゴリズムを使っています。
奥村晴彦、他『Java によるアルゴリズム事典』技術評論社、2003
をちょっと変えただけです。参考 URL に Java のソースが全て
公開されているので、学習に便利かと思います。

import java.io.*;
class QA8293186 {
private final static int student = 5;
private final static int subject = 3; // (id lang math)
public static void main(String[] args) {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int[][] grade = new int[student][subject];
for (int i = 0;i < student; i++) {
int[] person = new int[subject];
int j = 0;
while (j < subject) {
String prompt = new String();
switch (j) {
case 0: prompt = "id ? "; break;
case 1: prompt = "lang ? "; break;
case 2: prompt = "math ? "; break;
default: System.exit(1);
}
System.out.print(prompt);
grade[i][j] = Integer.parseInt(in.readLine()); j++;
}
}
System.out.println("in:");
for (int i = 0; i < student; i++) {
for (int j = 0; j < subject; j++) {
System.out.print(grade[i][j]);
if (j != subject - 1) { System.out.print(" "); }
}
System.out.println();
}
// selection sort
// via (c) 2003 Okumura, "Algorithm Encyclopedia by Java", Tokyo, Japan.
for (int i = 0 ; i < student - 1; i++) {
int high_score = grade[i][1] + grade[i][2];
int j = i;
for (int k = i + 1; k < student; k++) {
int compare = grade[k][1] + grade[k][2];
if (compare > high_score) { high_score = compare; j = k; }
}
if (i < j) {
int[] save = grade[j]; grade[j] = grade[i]; grade[i] = save;
}
}
// via end.
System.out.println("out:");
for (int i = 0; i < student; i++) {
for (int j = 0; j < subject; j++) {
System.out.print(grade[i][j]);
if (j != subject - 1) { System.out.print(" "); }
}
System.out.println();
}
}
}

参考URL:http://oku.edu.mie-u.ac.jp/~okumura/java-algo/

投稿日時 - 2013-10-06 22:14:38

補足

長くてもいいのでわかりやすく書いてください//ちなみに上のコードエラーが発生しましたよ??

投稿日時 - 2013-10-07 00:37:08

ANo.1

Java 勉強中です。

C.java:
import java.util.*;
class C {
 private final static int student = 5;
 private final static int subject = 3; // (id lang math)
 public static void main(String[] args) {
  Scanner in = new Scanner(System.in);
  ArrayList<ArrayList<Integer>> grade = new ArrayList<ArrayList<Integer>>();
  String prompt = new String();
  Integer k = 0;
  while (grade.size() < student) {
   ArrayList<Integer> person = new ArrayList<Integer>();
   while (person.size() < subject) {
    try {
     switch (person.size()) {
      case 0: prompt = "id ? "; break;
      case 1: prompt = "lang ? "; break;
      case 2: prompt = "math ? "; break;
      default: System.exit(1);
     }
     System.out.print(prompt);
     k = new Integer(in.next());
    } catch (Exception e) {
     System.err.println("ignore"); continue;
    }
    person.add(k);
   }
   grade.add(person);
  }
  System.out.println(grade);
  grade.sort(new privateComparator());
  System.out.println(grade);
 }
}
class privateComparator implements Comparator<ArrayList<Integer>> {
 @Override
 public int compare(ArrayList<Integer> a, ArrayList<Integer> b) {
  return (a.get(1) + a.get(2)) - (b.get(1) + b.get(2));
 }
}

投稿日時 - 2013-10-06 07:49:26

補足

try catch returnなど難しい言語使わないでください
初心者なのでわかりません

投稿日時 - 2013-10-06 19:25:49

あなたにオススメの質問