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

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

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

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

Q&A

解決済

2回答

1177閲覧

単語の小文字変換処理

y.s10201

総合スコア13

Java

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

0グッド

0クリップ

投稿2019/04/12 04:19

編集2019/04/12 05:39
### テキストファイルを読み、単語数を出力する。単語はすべて小文字に変換処理する。 カウント数が多い単語順に出力することはできましたが、小文字変換することができません。 toLowerCaseで変換しようと試したのですがうまくいきません。 ```ここに言語を入力 public class TextCounter { static String FILE = "c:\p001-input.txt"; static String SEPARATOR = "(\s+?|\.|,|;)"; public static void main(String[] args) { Map<String, Integer> map = new HashMap<>(); try (FileReader f = new FileReader(FILE); BufferedReader br = new BufferedReader(f)) { String line; while ((line = br.readLine()) != null) { String[] words = line.split(SEPARATOR); for (String word : words) { if (!word.isEmpty()) { if (map.containsKey(word)) { int count = map.get(word) + 1; map.put(word, count); } else { map.put(word, 1); } } } } } catch (FileNotFoundException e) { System.out.println("ファイルが見つかりません"); } catch (IOException e) { System.out.println("読み込み失敗"); } List<String> list = new ArrayList<>(); int max = 0; for (String key : map.keySet()) { list.add(key); if (max < key.length()) { max = key.length(); } } Collections.sort(list, (o1, o2) -> { return - map.get(o1) + map.get(o2); }); String format = "%-" + max + "s: %3d"; for (String word : list) { int count = map.get(word); if (10 <= count) { System.out.printf(format, word, count); System.out.println(); } } } }

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

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

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

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

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

swordone

2019/04/12 04:25

「うまくいかない」では通じません。なにがどう「うまくいかない」のか、たとえば「ここでこういうコンパイルエラーが出る」とか、「こうなって欲しいのに実際はこうなる」とか、具体的な事象を説明してください。
m.ts10806

2019/04/12 04:30

コードはマークダウンのcode機能を利用してご提示ください。
swordone

2019/04/12 06:08

私とmts10806さんの依頼をどちらも満たしていません。
jimbe

2019/04/12 18:13 編集

「実現したいこと」の前にある「```」を消して、コードの一番最後の「}」の下に「```」を入れてください. 「ここに言語を入力」の文字列を「java」に書き換えてください. これらの操作で, コードが薄灰色の枠内に(左上に java という文字列を伴って)表示されるようになります.
guest

回答2

0

解決したようなので、自分流の回答を

java

1public class TextCounter { 2 3 static String FILE = "c:\p001-input.txt"; 4 // 正規表現変更 こうすればこれらの文字が連続で出てきても空文字は発生しない 5 static String SEPARATOR = "[\s\.,;]+"; 6 7 public static void main(String[] args) { 8 try (FileReader f = new FileReader(FILE); 9 BufferedReader br = new BufferedReader(f)) { 10 11 Map<String, Long> map = 12 br.lines().flatMap(s -> Arrays.stream(s.split(SEPARATOR))) 13 .collect(Collectors.groupingBy(String::toLowerCase, 14 Collectors.counting())); 15 int maxLength = map.keySet().stream().mapToInt(String::length).max(); 16 String format = "%-" + maxLength + "s: %3d"; 17 map.entrySet().stream().filter(e -> e.getValue() >= 10) 18 .sorted(Comparator.comparing(e -> e.getValue(), 19 Comparator.reverseOrder())) 20 .map(e -> String.format(format, e.getKey(), e.getValue())) 21 .forEachOrdered(System.out::println); 22 23 } catch (FileNotFoundException e) { 24 System.out.println("ファイルが見つかりません"); 25 } catch (IOException e) { 26 System.out.println("読み込み失敗"); 27 } 28 } 29}

ただし、10回以上出現する単語だけ出力しているようなので、最長単語の出現回数が9回以下の場合に隙間が空く気がする

投稿2019/04/15 18:09

swordone

総合スコア20649

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

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

y.s10201

2019/04/16 00:23

ありがとうございます。 ちなみに、単語区切りを英数字以外にする正規表現はどのように書けばよいでしょうか?
guest

0

ベストアンサー

java

1for (String word : words) { 2 if (!word.isEmpty()) { 3 word = word.toLowerCase(); // ここ 4 if (map.containsKey(word)) { 5 int count = map.get(word) + 1; 6 map.put(word, count); 7 } else {

投稿2019/04/12 12:21

A-pZ

総合スコア12011

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

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

y.s10201

2019/04/15 08:27

回答ありがとうございます。 上手くいきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問