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

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

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

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

Q&A

解決済

1回答

3243閲覧

paizaの単語をカウントする問題についてです

udon_

総合スコア7

Java

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

0グッド

0クリップ

投稿2018/02/27 18:52

編集2018/02/27 18:58

前提・実現したいこと

javaで"red green blue blue green blue "が入力されたとき、
単語がカウントされるコードを描いています。

単語の数をHashMapの値に格納してカウントしたいのですが
上手くいきません

例えば
"red green blue blue green blue "が入力されたときに
red 1
green 2
blue 3
となるようにしたいです。

発生している問題・エラーメッセージ

HashMapの中身が{red green blue blue green blue=1}となってしまっているのですが 何故こうなっているのかわかりません

該当のソースコード

java

1import java.util.*; 2 3 4public class Main { 5 public static void main(String[] args) { 6 // 自分の得意な言語で 7 // Let's チャレンジ!! 8 HashMap<String ,Integer> HM = new HashMap<String ,Integer>();//キーKey,値Value 9 Scanner sc = new Scanner(System.in); 10 11 //--この間をループさせたい-------------------------------------- 12 13 boolean Scanner_Next = true ; 14 15 Integer V = 0; 16 17 try{ 18 while(Scanner_Next == true){ 19 20 21 22 //-----この間がおかしい?--------------------------------------- 23 24 String line = sc.nextLine();//"red green blue blue green blue " が入力されて、1週目は"red "が取得される 25 26 27 if(HM.containsKey(line)){//HashMapにnextLineで読み取られたキー上がるとき、対応する値を取得し+1して格納 28 V = HM.get(line) ;// HM.get(line)はkeylineに対応する値valueを取得するメソッド 29 V = ++V ;//valueを+1する 30 HM.put(line,V);//+1された値をキーと一緒に上書き格納 31 }else{ 32 HM.put(line,1);//HashMapにnextlineで読み取られたキーがないとき、そのキーと値1を格納 33 } 34 35 //-------------------------------------------- 36 37 38 39 }//while 40 }catch(NoSuchElementException e){ 41 Scanner_Next = false;//スキャナーに次のトークンがない時、falseを代入してループ終了 42 } 43 44 //-------------------------------------------- 45 46 47 48 49 for(String k : HM.keySet()){ 50 Integer v = HM.get(k); 51 System.out.println(k+" "+v); 52 } 53 54 55 } 56}

試したこと

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2018/02/27 21:52

たしか 「paiza 転職」の問題ですよねこれ
guest

回答1

0

ベストアンサー

paiza ラーニング の練習問題なようなので

ノーテスト指摘、一応 回答コードにならないように間の処理をいろいろと消させてもらう

import java.util.*; public class Main { public static void main(String[] args) { HashMap<String ,Integer> HM = new HashMap<String ,Integer>();//キーKey,値Value Scanner sc = new Scanner(System.in); try{ // TODO 公式サンプル:https://paiza.jp/guide/samplecode.html // TODO 利用メソッドは公式を確認せよ:https://docs.oracle.com/javase/jp/8/docs/api/java/util/Scanner.html#hasNext-- while(sc.hasNext()){ // TODO 利用メソッドは公式を確認せよ:https://docs.oracle.com/javase/jp/8/docs/api/java/util/Scanner.html#next-- String line = sc.next(); // TODO 処理が逆である if(HM.containsKey(line)){ }else{ } }//while } // TODO 現在の推奨は entrySet :https://docs.oracle.com/javase/jp/8/docs/api/java/util/Map.html#entrySet-- for(Entry<String,Integer) e : HM.entrySet()){ } } }

投稿2018/02/27 22:27

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

udon_

2018/02/27 22:54

ありがとうございます これを参考にしつつ考えてみます 丸投げの質問になってしまっていたので 次回以降質問の仕方に気をつけて投稿したいと思います。
退会済みユーザー

退会済みユーザー

2018/02/27 23:50

多分、理由はpaizaのなんで 適切なものが無いから 一番近いそれで低評価つけられている。
退会済みユーザー

退会済みユーザー

2018/02/27 23:52

ちなみにとある2行を削除しないとコンパイルエラーになるはず。
udon_

2018/02/28 00:33 編集

ああああ利用規約読んでませんでした よく肝に免じておきます…
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問