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

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

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

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

GET

GETとはHTTPが対応するリクエストメソッドの一つです。クライアントからサーバーへ送られたURLパラメータのデータを取得する時必要がある時に使われます。

Null

Nullとは、プログラミング言語やデータベースにおけるデータ表現の一種です。コンテキストによって"空"もしくは"長さ0の文字列"、”未知・不明”を意味します。

Java

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

Eclipse

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

Q&A

解決済

2回答

1481閲覧

郵便番号データをcsvから読み込んで郵便番号を入力し、該当するものを出力。

hona_tan

総合スコア45

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

GET

GETとはHTTPが対応するリクエストメソッドの一つです。クライアントからサーバーへ送られたURLパラメータのデータを取得する時必要がある時に使われます。

Null

Nullとは、プログラミング言語やデータベースにおけるデータ表現の一種です。コンテキストによって"空"もしくは"長さ0の文字列"、”未知・不明”を意味します。

Java

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

Eclipse

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

0グッド

0クリップ

投稿2020/10/21 13:58

編集2020/10/22 12:09

郵便番号を入力し、該当するものを出力するプログラムです。
なので存在しない郵便番号は入力しない前提です。

実行すると住所のところがnullになってしまいます。何がいけないんでしょう?
HashMapを使いたいのですがgetではダメなんでしょうか?

import java.io.File; import java.io.FileNotFoundException; import java.util.HashMap; import java.util.Scanner; public class PostalCode { public static void main(String[] args) { File fr = new File("postalcode.csv"); try (Scanner fin = new Scanner(fr)) { HashMap<Integer, String> map = new HashMap<Integer, String>(); System.out.print("郵便番号:"); Scanner str = new Scanner(System.in); int yuubin = str.nextInt(); String address = map.get(yuubin); map.put(yuubin, address); System.out.println(yuubin+ "に対応する住所は" +address+ "です。"); } catch (FileNotFoundException e) { System.out.println("ファイルが見つかりません"); } } }

実行結果

郵便番号:640943 640943に対応する住所はnullです。

ファイルの貼り方がわからないので写真を貼っておきます。
イメージ説明

Eclipseを使っています。

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

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

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

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

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

guest

回答2

0

ベストアンサー

HashMapを使いたいのですがgetではダメなんでしょうか?

HashMapのインスタンスを作っただけでは、中身は空っぽです。getするまえに、putしましょう。現状ではputしてないから、中身は空っぽ。なので、ナニをget()してもnullが返されます。

投稿2020/10/21 14:34

shiketa

総合スコア3971

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

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

hona_tan

2020/10/22 12:11

String address = map.get(yuubin); map.put(yuubin, address); を追加してみました。やっぱりnullになります。 郵便番号の情報が入っていないからだとだと思うのですが、どのように情報を入れればいいのかわからないです。
guest

0

CSVファイルを読み込んで、郵便番号をキー項目としたMapに格納する必要があります。例えば以下のように実装も可能です。

java

1import java.io.File; 2import java.io.IOException; 3import java.nio.file.Files; 4import java.nio.file.Path; 5import java.util.Map; 6import java.util.StringTokenizer; 7import java.util.stream.Collectors; 8 9public Map<Integer, String> csvReader(String filename) throws IOException { 10 Path path = new File(filename).toPath(); 11 Map<Integer, String> addresses = 12 Files.lines(path) // 読み込んだCSVファイルを1行ずつに分解 13 .collect(Collectors.toMap(line ->{ // 1行ずつのCSVをMapに変換して登録 14 StringTokenizer stk = new StringTokenizer(line, ","); // 第1引数はMapのキー 15 return Integer.parseInt(stk.nextToken()); 16 }, line -> { 17 StringTokenizer stk = new StringTokenizer(line, ","); // 第2引数はMapのValue 18 stk.nextToken(); // カンマの左側を無視して、2番目を使う 19 return stk.nextToken(); 20 })); 21 return addresses; 22}

投稿2020/10/22 14:57

A-pZ

総合スコア12011

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問