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

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

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

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

Q&A

1回答

1074閲覧

ファイルの中の文章の正規化

west_urad

総合スコア13

Java

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

0グッド

0クリップ

投稿2019/08/19 15:29

前提・実現したいこと

機械学習のための学習用のデータの作成を作っています。
作成源はwikipedhiaのファイルを使っています。
実際にダウンロードしたファイルは正規化がされておらず、例えば、
Because I've been grading all damn day and am as tired as
a Swearengen of hearing
other about the finished semesters
of pretty much every other academic blogger,
I thought that
it might
be best to avoid
jealously lashing out and scribble a
"Best of Acephalous 2009" post.

のようにバラバラになっています。そこで、「.」が含まれていたら、例文を一行一文の文章に正規化したいのですが方法がわかりません。

発生している問題

コンパイルは上手くいくが、実行結果が上手くいかない(空になる)

該当のソースコード

import java.io.;
import java.util.
;

class Checker{
void run(String File) throws IOException{
}//run終わり

void Period(String File) throws IOException{//現在の行番号を数える変数
BufferedReader in = new BufferedReader(new FileReader(File));//Fileを読み込む
String line;
while((line = in.readLine()) != null){//1行ずつ読む
if(line =="."){
String[] splitted = line.split(".");
ArrayList<String> list = new ArrayList<>();
list.add(String.valueOf(splitted));
System.out.println(list);
}
}
in.close();//閉じる
}

public static void main(String[] args) throws IOException{
Checker check = new Checker();
if(args.length != 0) {//引数が与えられなかった時、java.lang.ArrayIndexOutOfBoundsException: 0と出たので、runではなくクラスの中に入れました。
check.Period(args[0]);
}else{
System.out.println("ERROR:");
}
}
}

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

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

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

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

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

jimbe

2019/08/19 18:35

なぜ「空になる」のか, 調査方法と調査結果を教えて頂けますか.
west_urad

2019/08/19 18:59

調査方法 java Checker example.txt 調査結果  [[Ljava.lang.String;@7852e922] と出ました。[[Ljava.lang.String;@7852e922]を検索してみたところ、https://teratail.com/questions/533 のサイトを見ました。 そして、list.add(Arrays.toString(splitted)); System.out.println(list); と修正し、実行してみたところ、[]と空文字が出力しました。
asakuta

2019/08/20 00:05

コードはMarkdown記法で挿入してください。 それと、補足情報がある場合はここではなく質問文で追記してください。 if文の条件式内でStringを==で比較していますが正しくはequalsを使います。
jimbe

2019/08/20 02:03

https://teratail.com/questions/533 では ArrayList は出てきませんが, なぜ System.out.println(Arrays.toString(splitted)); では無く ArrayList を入れたのでしょう.
guest

回答1

0

読み込む行数によっては処理が大変になるかもしれませんが、readLine()で読み込んだ行全てを1行にまとめて(+=)、そのあとにsplit(".")で配列に落とし込めば配列内で1行になりませんかね。
検証はしていないので実際にどれくらいの配列ができるかは不明ですが…

投稿2019/08/21 05:33

mikan_s4n

総合スコア377

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問