Javaでのプログラミングで困ってます・・・
質問:Javaでのプログラミングで困ってます。 「再帰的なデータを使って学生の成績を管理したい。三人分の、 氏名、学番、英語、数学、国語の成績を管理できる再帰的データ構造用のプログラム を作成せよ」です困っているのは、「再帰的データ構造」が何なのか?と、 for文の使い方が違うので、三人目のデータしか出力されないことです。 どなたかアドバイス等お願い致します。 import java.io.*; class Student{ String name; //氏名 int num; //学番 int eigo; //英語 int suugaku; //数学 int kokugo; //国語 } class Kadai04{ public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); Student x = new Student(); //xという箱を作成 String line; for(int i=0 ; i<3 ; i++){ System.out.print("氏名は"); x.name = (br.readLine()); System.out.print("学番は"); x.num = Integer.parseInt(br.readLine()); System.out.print("英語="); x.eigo = Integer.parseInt(br.readLine()); System.out.print("数学は"); x.suugaku = Integer.parseInt(br.readLine()); System.out.print("国語は"); x.kokugo = Integer.parseInt(br.readLine()); } System.out.println("---------------------------"); for(int j=0 ; j<3 ; j++){ System.out.println("氏名は"+x.name ); System.out.println("学番は"+x.num ); System.out.println("英語="+x.eigo); System.out.println("数学は"+x.suugaku); System.out.println("国語は"+x.kokugo); System.out.println(" "); } } }
回答:再帰的なものって、一般には(同一構造の)入れ子構造を言います。典型例が樹状(ツリー)構造 なので「再帰的なデータを使って学生の成績を管理したい。」っていう題意が【意味不明】です。 学生の成績自体はどう考えても再帰構造を普通には持ち得ません。 出題者と直接会話した方が建設的かと。 【補足】 別の方が「再帰的なデータ構造でイチバン単純なのは単方向リスト」とおっしゃっています。 形式的にはその言明は正しいですが、意味的には問題があります。 樹状構造は線形構造では【ない】ですが、単方向リストは線形構造で【も】あります。 【補足2】 他の方々が言及されている再帰呼出しですが、再帰構造を持ったデータの処理には 最適の方法です。単方向リストはforループでも処理できますが、形式的には再帰構造に なっているので、再帰呼出しででも処理できます。ただ、この場合、再帰呼出しの メリットはほとんど実感できません。Yahoo知恵袋より引用