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

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

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

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

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

2回答

6727閲覧

ファイルから1行ずつ要素を取得して、配列に入れたい

Eston

総合スコア67

Java

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

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

1クリップ

投稿2018/11/24 18:08

編集2018/11/24 18:11

いつもお世話になっております。
今回は、テキストファイルの中から、配列に1行ずつ文字列を入れていきたいと考えています。
ファイルの中身の要素は数値ですが、後に文字列から数値に変換して計算するつもりです。

test.txtファイルの中身
70
65
61
71
66

このように1行ずつ、数値が開かれています。
それを
String[] tempInside の中に格納して、
System.out.println(tempInside[1]);
の場合は
65
が出力されるようにしたいのです。

しかしながら、コンソールでエラーが出てしまいます。
解決策をご存知の方がいましたら、ご助力願いたいです。
よろしくお願いいたします。

Java

1import java.io.File; 2import java.io.FileReader; 3import java.io.IOException; 4import java.util.ArrayList; 5import java.util.List; 6 7public class AynRandTest { 8 9 String username = System.getProperty("user.name"); 10 File file = new File("/Users/" + username + "/Desktop/Examples/" + "test.txt"); 11 if (!file.exists()) { 12 System.out.print("There is no such a file."); 13 return; 14 } 15 FileReader fileReader = new FileReader(file); 16 BufferedReader bufferedReader = new BufferedReader(fileReader); 17 String temp = bufferedReader.readLine(); 18 String[] tempInside = temp.split("\n"); 19 20 System.out.println(""); 21 System.out.println(""); 22 System.out.println(tempInside[1]); 23 24} 25

実行時のエラー 23行目に問題

開発環境
MacOS
Eclipse
Java

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

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

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

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

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

guest

回答2

0

  • ファイル読み込みは何がベストなのか(Java)

https://qiita.com/motoki1990/items/755c1b0c8d12b49b0c77

FileInputStream をつかってかいてみました。

java

1import java.io.BufferedReader; 2import java.io.File; 3import java.io.FileInputStream; 4import java.io.IOException; 5import java.io.InputStreamReader; 6import java.util.ArrayList; 7import java.util.List; 8 9public class AynRandTest { 10 public static void main(String args[]) { 11 String username = System.getProperty("user.name"); 12 String file_path = "/Users/" + username + "/Desktop/Examples/" + "test.txt"; 13 File file = new File(file_path); 14 15 if (!file.exists()) { 16 System.out.print("There is no such a file. " + file.getPath()); 17 return; 18 } 19 20 String[] tempInside = null; 21 try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file)))) { 22 List<String> lineList = new ArrayList<String>(); 23 String line; 24 while ((line = reader.readLine()) != null) { 25 lineList.add(line); 26 } 27 tempInside = lineList.toArray(new String[lineList.size()]); 28 } catch (IOException e) { 29 e.printStackTrace(); 30 } 31 32 System.out.println(""); 33 System.out.println(""); 34 System.out.println(tempInside[1]); 35 } 36}

投稿2018/11/25 00:07

katoy

総合スコア22324

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

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

0

ベストアンサー

修正案

java

1import java.io.File; 2import java.io.FileReader; 3import java.io.IOException; 4import java.util.ArrayList; 5import java.util.List; 6 7public class AynRandTest { 8 public static void main(String args[]){ 9 String username = System.getProperty("user.name"); 10 File file = new File("/Users/" + username + "/Desktop/Examples/" + "test.txt"); 11 if (!file.exists()) { 12 System.out.print("There is no such a file."); 13 return; 14 } 15 FileReader fileReader = new FileReader(file); 16 BufferedReader bufferedReader = new BufferedReader(fileReader); 17 String line; 18 List<String> lineList = new ArrayList<String>(); 19 while((line = bufferedReader.readLine()) != null){ 20 lineList.add(line) 21 } 22 String[] tempInside = lineList.toArray(new String[lineList.size()]); 23 24 System.out.println(""); 25 System.out.println(""); 26 System.out.println(tempInside[1]); 27 } 28}

説明

元のコードではreadLine()を使って1行取り出したあと、改行コードごとに分割しようとする動作になっているように見えます。
readLine()で読み込まれるのは改行コードまでなので、改行での分割結果は1つのみになりますがその2つ目にアクセスしようとしたために例外が発生していると思われます。修正案では、readLine()をファイル読み切るまで呼び出し結果をリストに追加するように変更しています。
(Java の実行環境がないため、テストしていないコードですが参考になれば幸いです。)

投稿2018/11/24 21:19

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Eston

2018/11/24 21:57

無事、出力できました。ありがとうございます。 readLine()の実際の処理への理解が深まりました。 今後共、一つ一つ深掘りして学習していきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問