前提・実現したいこと
初めて投稿します。
JAVAを学び始めて2か月の初心者です。自分でも調べたのですが、解決に至らなかったため質問させていただきました。つたない部分もあると思いますが、ご理解いただけると幸いです。長文となると思いますが、どうかお付き合いください。
やりたいことは、2つのデータファイル「学生一覧(student.txt)」と「テスト結果一覧(test.txt)」を使用して、東京出身の学生の全教科の平均点をコンソールに出力することです。この2つは最後に記載します。
条件としまして、
● 下記の1⃣~5⃣の機能を使うこと。
● 1⃣~5⃣とは別クラスに、mainメソッドを作成すること。
● 制作したmainメソッドから必要な機能を呼び出し、東京出身の学生の全教科の平均点をコンソールに出力することです。
◆◇◆ 機能 ◆◇◆
1⃣ ファイル読み込み機能。
引数に渡されたテキストファイルのパスから、ファイルのデータを読み込み、1行ずつリストに格納し返却する。
※ 引数 String型(対象ファイルのパス)、戻り値 ArrayList<String> (対象ファイルのデータリスト)
2⃣ 引数として渡した出身地と合致する学生人数を数える機能。
機能1⃣を利用し、学生一覧を読み込み(機能1⃣の引数に該当ファイルのパスを渡す)、読み込んだデータから出身地があう学生人数を算出し、返却する。
※ 第一引数 String型 (出身地) , / 第二引数 String型 (対象ファイルパス)
※ 戻り値 ArrayList<String> (学生番号のデータリスト)
3⃣ 引数として渡した出身地と合致する学生の学生番号をリスト化する機能。
機能1⃣を利用し、学生一覧を読み込み(機能1⃣の引数に該当ファイルパスを渡す)、読み込んだデータから出身地が合う学生の学生番号をリスト化し、返却する。
※ 第一引数 String型 (出身地) , / 第二引数 String型 (対象ファイルパス)
※ 戻り値 ArrayList<String> (学生番号のデータリスト)
4⃣ 指定した学生番号全員の、全教科合計点を算出する機能。
機能1⃣を利用し、テスト結果一覧を読み込む(機能1⃣の引数に第一因数パスを渡す)。
読み込んだテスト結果一覧から、第二引数の学士番号リストに合うテスト結果を全て合計し、返却する。全員分の全教科合計を戻り値として返却する。
※ 第一引数 String型 (対象ファイルのパス) , / 第二引数 ArrayList<String> (学生番号のデータリスト)
※ 戻り値 int型 (全員の全教科合計点)
5⃣ 指定したい出身地の学生の全教科の平均点を算出する機能。
第一引数、第二引数を利用し、全教科の平均点を算出し、返却する。
※ 第一引数 int型 (対象出身地の学生人数) , / 第二引数 int型 (全員の全教科合計点)
※ 戻り値 int型 (全教科の平均点)
◆◇◆◇◆◇◆◇◆◇◇◆◇◆◇
長文失礼しました。よろしくお願いします!
発生している問題・エラーメッセージ
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
PATH を変数に解決できません
PATH を変数に解決できません
PATH2 を変数に解決できません
menber を変数に解決できません
at training.test8.main(test8.java:12)
該当のソースコード
メインメソッドはこのようにしました。
他の各種機能は test801,maruiti/test802,maruni/test803,marusan/testmaruyon/test805,marugo としました。
package training;
import java.io.IOException;
import java.util.ArrayList;
public class test8 {
public static void main(String[] args)throws IOException { try { //機能② 東京出身の学生人数 int member = test802.maruit2("Tokyo",PATH); //機能③ 東京出身の学生番号リスト ArrayList<String> numList = test803.marusan("Tokyo",PATH); //機能④ 東京の学生の、全教科合計点 int sum = test804.maruyon(PATH2,numList); //機能⑤ 全教科の平均点出力 System.out.println("東京の学生の平均点:"+test5.marugo(sum,menber)); } catch (IOException e) { e.printStackTrace(); } }
}
package training;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
public class test801 {
public static ArrayList<String> maruiti(String path) throws IOException { return new ArrayList<String>(Files.readAllLines(Paths.get(path))); }
}
package training;
import java.io.IOException;
import java.util.ArrayList;
public class test802 {
// 機能② 人数を数える機能
public static int maruni() throws IOException {
ArrayList<String> list = new ArrayList<String>();
String studentFilePath1 = "C:\Users\user\Documents\Student.txt"; list = test701.maruiti(studentFilePath1); return (int) list.stream().filter(s -> s.contains("S00")).count(); }
}
package training;
import java.io.IOException;
import java.util.ArrayList;
public class test803 {
//機能③ 指定した教科の合計点を出す機能
public static int marusan( String Japanese) throws IOException {
String testResultsFilePath ="C:\Users\user\Documents\test.txt"; ArrayList<String> list = new ArrayList<String>(); list = test701.maruiti(testResultsFilePath); return (int) list.stream().filter(s -> s.contains(Japanese)) .map(sub -> sub.split(",")[3]).mapToInt(Integer::parseInt).sum(); } }
試したこと
スッキリわかるJava入門、Javaの絵本購読。各サイトを調べる。
補足情報(FW/ツールのバージョンなど)
2つのデータファイルの中身
● student.txt
S001,saito,Tokyo
S002,tanaka,Osaka
S003,suzuki,Kyoto
S004,yamada,Tokyo
S005,sato,Tokyo
S006,goto,Hokkaido
S007,suzuki,Tokyo
S008,watanabe,Tokyo
S009,yamamoto,Osaka
S0010,takahashi,Osaka
● test.txt
S001,Japanese,2020-02-23,50
S001,Mathematics,2020-02-23,70
S001,Science,2020-02-23,40
S001,history,2020-02-23,60
S002,Japanese,2020-02-23,40
S002,Mathematics,2020-02-23,90
S002,Science,2020-02-23,20
S002,history,2020-02-23,60
S003,Japanese,2020-02-23,50
S003,Mathematics,2020-02-23,60
S003,Science,2020-02-23,90
S003,history,2020-02-23,60
S004,Japanese,2020-02-23,70
S004,Mathematics,2020-02-23,90
S004,Science,2020-02-23,40
S004,history,2020-02-23,100
S005,Japanese,2020-02-23,50
S005,Mathematics,2020-02-23,60
S005,Science,2020-02-23,70
S005,history,2020-02-23,70
S006,Japanese,2020-02-23,80
S006,Mathematics,2020-02-23,40
S006,Science,2020-02-23,50
S006,history,2020-02-23,90
S007,Japanese,2020-02-23,70
S007,Mathematics,2020-02-23,80
S007,Science,2020-02-23,60
S007,history,2020-02-23,30
S008,Japanese,2020-02-23,40
S008,Mathematics,2020-02-23,60
S008,Science,2020-02-23,40
S008,history,2020-02-23,70
S009,Japanese,2020-02-23,50
S009,Mathematics,2020-02-23,90
S009,Science,2020-02-23,90
S009,history,2020-02-23,50
S010,Japanese,2020-02-23,70
S010,Mathematics,2020-02-23,70
S010,Science,2020-02-23,40
S010,history,2020-02-23,80