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

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

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

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

Q&A

2回答

726閲覧

コードをどう直せばいいか教えて下さい。

TTTTkuma

総合スコア7

Java

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

0グッド

0クリップ

投稿2020/04/19 06:47

編集2020/04/19 10:55

StudentTestクラスにてテキストファイルstudent.txtをからデータを読み込み、テキストファイルの各行をStudentオブジェクトに変換してバイナリファイルstudent.datに書き込み、そのStudentに書き込まれたデータが正しいか確認したいのですが上手くいきません。
どう改善すればよろしいでしょうか?助言くださると助かります。
テキストファイル内の文書は

Sam 001 1999/01/07
Jennifer 002 1998/04/05
Bob 003 1999/03/14
Jonathan 004 1998/09/07
となります。

java

1 2package studenttest; 3import java.io.BufferedReader; 4import java.io.BufferedWriter; 5import java.io.File; 6import java.io.FileInputStream; 7import java.io.FileNotFoundException; 8import java.io.FileOutputStream; 9import java.io.FileReader; 10import java.io.IOException; 11import java.io.InputStreamReader; 12import java.io.OutputStreamWriter; 13import java.io.ObjectInputStream; 14import java.io.ObjectOutputStream; 15import java.util.logging.Level; 16import java.util.logging.Logger; 17public class StudentTest { 18 19 private static void processAllFiles(File dir) { 20 File files[] = dir.listFiles(); 21 for(File file : files) { 22 if(file.isFile()) { 23 if(file.getAbsolutePath().endsWith(".java")) { 24 System.out.println(file.getAbsolutePath()); 25 } 26 } 27 else processAllFiles(file); 28 } 29 } 30 public static void main(String[] args) throws IOException, ClassNotFoundException { 31 32 readStudents("D:\students.txt","big5"); 33 34 } 35 36 37 private static void readObjectStream(String filename) throws ClassNotFoundException, IOException { 38 ObjectInputStream input=null; 39 try { 40 input = new ObjectInputStream(new FileInputStream(filename)); 41 while (true) { 42 Object o = input.readObject(); 43 System.out.println(o); 44 if (o == null) { 45 break; 46 } 47 } 48 input.close(); 49 } catch (IOException | ClassNotFoundException e) { 50 input.close(); 51 } 52 } 53 private static void writeObjectStream(String filename) throws FileNotFoundException, IOException { 54 try (ObjectOutputStream output = new ObjectOutputStream(new FileOutputStream(filename))) { 55 output.writeObject(new Date(1992, 3, 23)); 56 output.writeObject(new Date(1997, 5, 3)); 57 output.writeObject(new Date(2010, 7, 16)); 58 output.writeObject("hello"); 59 output.writeObject(new Student("John","213" , new Date(1997, 5, 3))); 60 } 61 } 62 private static void writeToFileWithEncoding(String fileanme, String encoding) { 63 try { 64 FileOutputStream stream = new FileOutputStream(fileanme); 65 OutputStreamWriter writer = new OutputStreamWriter(stream, encoding); 66 try (BufferedWriter output = new BufferedWriter(writer)) { 67 output.write("Abc"); 68 output.write("オブジェクト指向"); 69 } 70 } catch (IOException ex) { 71 Logger.getLogger(StudentTest.class.getName()).log(Level.SEVERE, null, ex); 72 } 73 } 74 private static void readMembers(String filename, String encoding) throws FileNotFoundException, IOException { 75 try (BufferedReader input = new BufferedReader(new InputStreamReader(new FileInputStream(filename), encoding))) { 76 Student students[] = new Student[3]; 77 int index = 0; 78 while (true) { 79 String line = input.readLine(); 80 if (line == null) { 81 break; 82 } 83 84 String tokens[] = line.split(","); 85 86 String name = tokens[0], id = tokens[1], birthday = tokens[2]; 87 String births[] = birthday.split("/"); 88 89 int yy = Integer.parseInt(births[0]), mm=Integer.parseInt(births[1]),dd=Integer.parseInt(births[2]); 90 91 students[index] = new Student(name, id, new Date(yy, mm, dd)); 92 index++; 93 94 } 95 System.out.println("--------------"); 96 for(Student member : students) System.out.println(member); 97 } 98 } 99 100 private static void readByReaderWithEncoding(String filename, String encoding) throws FileNotFoundException, IOException { 101 FileInputStream stream = new FileInputStream(filename); 102 InputStreamReader reader = new InputStreamReader(stream, encoding); 103 try (BufferedReader input = new BufferedReader(reader)) { 104 while (true) { 105 String line = input.readLine(); 106 if (line == null) { 107 break; 108 } 109 System.out.println(line); 110 } 111 } 112 } 113 private static void readByReaderDefaultEncoding(String filename) throws FileNotFoundException, IOException { 114 try (FileReader reader = new FileReader(filename)) { 115 while (reader.ready()) { 116 117 char[] chIn = new char[10]; 118 119 int nResult = reader.read(chIn); 120 if (nResult == -1) { 121 break; 122 } 123 124 125 System.out.println(chIn); 126 } 127 } 128 } 129 private static void readFileStream(String filename) { 130 try { 131 System.out.println("main started"); 132 try (FileInputStream fis = new FileInputStream(filename)) { 133 System.out.println("input is " + fis); 134 while (fis.available() > 0) { 135 136 byte[] b = new byte[1]; 137 138 int nResult = fis.read(b); 139 if (nResult == -1) { 140 break; 141 } 142 143 System.out.print(new String(b)); 144 } 145 } 146 } catch (FileNotFoundException ex) { 147 Logger.getLogger(StudentTest.class.getName()).log(Level.SEVERE, null, ex); 148 } catch (IOException ex) { 149 Logger.getLogger(StudentTest.class.getName()).log(Level.SEVERE, null, ex); 150 } 151 } 152 private static void readStudents(String dstudentstxt, String big5) { 153 throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 154 } 155} 156

java

1 2package studenttest; 3public class Student { 4 String name; 5 String id; 6 Date birthday; 7 public Student(String n,String i, Date d) { 8 name = n; 9 id = i; 10 birthday = d; 11 12 } 13 @Override 14 public String toString() { 15 return name + ": " + id +": " + birthday; 16 } 17} 18

java

1 2package studenttest; 3import java.io.Serializable; 4public class Date implements Serializable { 5 int year, month, day; 6 public Date(int yy, int mm, int dd) { 7 year = yy; 8 month = mm; 9 day = dd; 10 } 11 public String toString() { 12 return String.format("%04d/%02d/%02d", year, month, day); 13 } 14} 15

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

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

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

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

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

jimbe

2020/04/19 07:04

コードの途中に > chIn 中,若已達檔案底端則回傳-1 という妙なモノが入っていますが, これは何でしょう.
TTTTkuma

2020/04/19 07:21

それは消し忘れた文ですね。 修正いたしました!
guest

回答2

0

java

1 public static void main(String[] args) throws IOException, ClassNotFoundException { 2 3 readStudents("D:\students.txt","big5"); 4 5 }

java

1 private static void readStudents(String dstudentstxt, String big5) { 2 throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 3 }

これで動かそうとしても不可能ですよね

投稿2020/04/19 12:07

swordone

総合スコア20669

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

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

0

そのエラーは、
「指定されたパス名で示されるファイルが開けなかったこと」
を指すので、「members.txt」が保存されている場所をもう一度確認する必要がありそうですね。

投稿2020/04/19 07:09

nimosoh

総合スコア42

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

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

nimosoh

2020/04/19 07:13

すいません、そもそも「member.java」にしなくてはならないです。 ファイルの名前を変えて、javac member.java でコンパイルし、 java member で実行ですね。
TTTTkuma

2020/04/19 07:18

自分は NetBeansでプログラムコードを制作したのですが、package filetestの中にFileTesj.javaとDate.javaそしてMember.javaがある形なのです。 この場合はファイル名自体をMemberにした方が良いという事でしょうか?
nimosoh

2020/04/19 07:36

NetBeansを使ったことがないのでわからないですが、 あなたのPCにそのファイルが保存されているのであれば、そのパッケージの中の「Data.java」が入っている場所までコマンドプロンプトで移動し、コンパイル、実行する必要がありますね。 プログラムはよく見てないので、修正が必要かどうかはまだわかりません。
nimosoh

2020/04/19 07:40

そのパッケージとは、filetestというパッケージのことです。 その中にFileTesj.javaとDate.javaそしてMember.java があるんですかね..
nimosoh

2020/04/19 07:44

プログラムは、みたところクラスを作ってるだけでmain関数がないので、そもそも動かせないかも....
TTTTkuma

2020/04/19 07:49

成る程、では動かすにはどうmain関数を使えば良いのでしょうか?
nimosoh

2020/04/19 07:54

main関数自体はありますが、中身がないんですね。。 main関数の中に、あなたが目的とする内容を記述する必要が有ります。
nimosoh

2020/04/19 07:57

目的がわからないのでなんとも言えないです。。。
TTTTkuma

2020/04/19 08:01

私はmembers.txtファイルを作成し、そのファイル内にあるものを呼び出してout.printlnしたいと思っています。 この場合はmain関数内でファイルを作れば良いのでしょうか? その場合はどう作れば良いでしょうか?
nimosoh

2020/04/19 08:12

members.txtはプログラムではないんですね.... main関数内でファイルは作らなくても良いですが、txtファイルを引数として、main関数内で呼び出す(new)必要があります。
nimosoh

2020/04/19 08:22 編集

readFileStream(String filename) のfilenameにmember,txtを入れる、 つまり、main関数内でReadFileStreme readFileStreme = new ReadFileStreme(member); をしたりとか、他の関数でも同様にmain関数内で作る感じかな。。
TTTTkuma

2020/04/19 08:22

そうなんですね! 恐れ入りますがその場合はどうコードを組めばいいのでしょうか…? お恥ずかしながら未熟者故どう組めばいいか思いつきません。 教えて下さると大変助かります…。
nimosoh

2020/04/19 08:24

間違えました。FileTest fileTest = new FileTest(); ですね。少しこちらも頭がおかしくなってきました。
nimosoh

2020/04/19 08:25

この後に、fileTest.readFileStreme(member); でまず実行してみては?
nimosoh

2020/04/19 08:28

他にもfileTest.readByReaderDefaultEncoding(member);とか 作った関数をmain関数内で呼び出せば、あなたの目的に近く思います。 txtファイルはパッケージ内に入れておくことをお勧めします。
nimosoh

2020/04/19 08:39

みたところwriteObjectStream(String filename)が重要なのかな。。 fileTest.writeObjectStream("member")をmain関数内で呼び出うのが良いかも
TTTTkuma

2020/04/19 09:23

すいません、ここで全く違う質問なのですが…。 このコードを改変してこの三つのDate、Member、FileTestのうち、FileTestでパソコンの内にあるテキストファイルからデータを読み込みそのテキストの各行をMemberオブジェクトに変換してバイナリファイルmember.datに書き込み、そこに書き込まれたデータが正しいか確認する様にすることって可能でしょうか?
nimosoh

2020/04/19 09:41

可能か不可能かでいうと可能であると思います... ですがそこに至るまでのプロセスはもう少し簡単にできそうです。 まずはテキストファイルの内容を読み込みjavaプログラムで変数に格納し、扱うことから始めるべきですね
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問