- 締切済み
プログラミングわかんないです(JAVA)
1、5人分の、番号国語の点数、算数の点数を格納できるような、2次元行列を作成する 2、次にキーボードから5人の番号と国語と算数の点数を入力して配列に格納する。 3、次に国語と算数のごうけいが高いものを順に、番号と国語と算数をならびかえる。 4、最後に合計の高い順に番号を画面に出力する
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- MillenniuM
- ベストアンサー率58% (42/72)
main() の定義に public static void main(String[] args) throws IOException { って感じで IOEXception を明示すればどうですか。
- MillenniuM
- ベストアンサー率58% (42/72)
便利なクラスや例外、関数を使わないと、すごく長くなります。 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(); } } }
補足
長くてもいいのでわかりやすく書いてください//ちなみに上のコードエラーが発生しましたよ??
- MillenniuM
- ベストアンサー率58% (42/72)
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)); } }
補足
try catch returnなど難しい言語使わないでください 初心者なのでわかりません
補足
合計が高いもの順にがめんに出力なのに合計が低いじゅんになってますよ??勘違いだったらすいません