Prog1_15th

Similar documents
Prog1_11th

Prog1_13th

Prog2_10th

Prog2_9th

Prog1_6th

Prog1_10th

Prog1_3rd

Prog1_2nd

オブジェクト指向プログラミング・同演習 5月21日演習課題

Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文

<4D F736F F D2091E F196E291E889F090E C4816A82CC838C E646F6378>

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 条件判断文 3 switch 文 switch 文式が case の値と一致した場合 そこから直後の break; までを処理し どれにも一致しない場合 default; から直後の break; までを処理する 但し 式や値 1

K227 Java 2

第 3 回 Java 講座 今回の内容 今週の Java 講座はコレクション 拡張 for 文, ガベージコレクションについて扱う. 今週の Java 講座は一番内容が薄いも のになるだろう. コレクション コレクションとは大きさが決まっていない配列だと考えればよい. コレクションには List 先

JavaプログラミングⅠ

Java プログラミング Ⅰ 3 回目変 数 今日の講義講義で学ぶ内容 変数とは 変数の使い方 キーボード入力の仕方 変 数 変 数 一時的に値を記憶させておく機能 変数は 型 ( データ型 ) と識別子をもちます 2 型 ( データ型 ) 変数に記憶する値の種類変数の型は 記憶できる値の種類と範囲

スライド 1

JavaプログラミングⅠ

JavaプログラミングⅠ

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 今日の講義講義で学ぶ内容 switch 文 論理演算子 条件演算子 条件判断文 3 switch 文 switch 文 式が case のラベルと一致する場所から直後の break; まで処理しますどれにも一致致しない場合 def

た場合クラスを用いて 以下のように書くことが出来る ( 教科書 p.270) プログラム例 2( ソースファイル名 :Chap08/AccountTester.java) // 銀行口座クラスとそれをテストするクラス第 1 版 // 銀行口座クラス class Account String name

プログラミングA

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

デジタル表現論・第6回

Microsoft Word - java a.doc

JavaプログラミングⅠ

デジタル表現論・第4回

Microsoft PowerPoint ppt

コンピュータ中級B ~Javaプログラミング~ 第3回 コンピュータと情報をやりとりするには?

Microsoft PowerPoint - prog03.ppt

PowerPoint プレゼンテーション

Prog1_10th

情報処理Ⅰ

JAVA入門

Week 1 理解度確認クイズ解答 解説 問題 1 (4 2 点 =8 点 ) 以下の各問いに答えよ 問題 bit 版の Windows8.1 に Java をインストールする時 必要なパッケージはどれか 但し Java のコンパイルができる環境をインストールするものとする 1. jdk

プログラミング基礎I(再)

Microsoft PowerPoint - prog09.ppt

Java講座

Microsoft PowerPoint - prog09.ppt

Microsoft Word - NonGenList.doc

プログラミング入門1

問 次の Fortran プログラムの説明及びプログラムを読んで、設問に答えよ。

プログラミング入門1

Method(C 言語では関数と呼ぶ ) メソッドを使うと 処理を纏めて管理することができる 処理 ( メソッド ) の再実行 ( 再利用 ) が簡単にできる y 元々はC 言語の関数であり 入力値に対する値を 定義するもの 数学では F(x) = 2x + 1 など F(x)=2x+1 入力値 (

GEC-Java

3,, となって欲しいのだが 実際の出力結果を確認すると両方の配列とも 10, 2, 3,, となってしまっている この結果は代入後の配列 a と b は同じものになっていることを示している つまり 代入演算子 = によるの代入は全要素のコピーではなく 先をコピーする ため 代入後の a と b は

Prog1_12th

Javaプログラムの実行手順

JAVA入門

PowerPoint プレゼンテーション

プログラミング入門1

Java言語 第1回

2

情報実習Ⅱ

JavaプログラミングⅠ

break 文 switch ブロック内の実行中の処理を強制的に終了し ブロックから抜けます switch(i) 強制終了 ソースコード例ソースファイル名 :Sample7_1.java // 入力値の判定 import java.io.*; class Sample7_1 public stati

JavaプログラミングⅠ

Microsoft Word - NonGenTree.doc

問題 01 以下は コンソールより年齢を入力させ その年齢にあった料金を表示するプログラムである 年齢ごとの金額は以下の通りである 年齢の範囲金額 0 歳以上 6 歳以下 120 円 7 歳以上 65 歳未満 200 円 65 歳以上無料 package j1.exam02; import java

2

Javaセキュアコーディングセミナー東京 第3回 入出力(File, Stream)と例外時の動作 演習解説

Microsoft PowerPoint - chap10_OOP.ppt

プログラミング入門1

2

メソッドのまとめ

(Microsoft PowerPoint - \223\306\217KJAVA\221\346\202R\224\ ppt)


できるプログラマーを本気で育てる Java 超 Webプログラマーへの第 歩 第 3 回コレクションと例外処理 テクノロジックアート 瀬嘉秀

PowerPoint Presentation

問題1 以下に示すプログラムは、次の処理をするプログラムである

Prog1_12th

JavaプログラミングⅠ

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

r1.dvi

明解Javaによるアルゴリズムとデータ構造

Microsoft PowerPoint - Pro110111

ただし 無作為にスレッドを複数実行すると 結果不正やデッドロックが起きる可能性がある 複数のスレッド ( マルチスレッド ) を安全に実行する ( スレッドセーフにする ) ためには 同期処理を用いるこ とが必要になる 同期処理は 予約語 synchronized で行うことができる ここでは sy

2006年10月5日(木)実施

12.1 インターネットアドレス インターネットアドレス インターネットアドレス 32 ビットの長さを持つインターネットに接続されたマシンを識別するのに使う インターネットアドレスは ピリオドで区切られたトークンの並びで表現されることもある インターネットアドレス

2016 年度 JAVA 講座第六週目 目次 パッケージ... 2 パッケージの作成... 2 パッケージの使用方法... 3 異なるパッケージ同名クラスの宣言... 4 パッケージの側面から見たアクセス修飾子... 4 ラッパークラス... 5 ラッパークラス利用法:キャスト... 5 ラッパーク

メソッドのまとめ

JavaプログラミングⅠ

基本情報STEP UP演習Java対策

Prog2_11th

PowerPoint プレゼンテーション

GEC-Java

Programming-C-9.key

Prog2_12th

HCI プログラミング 10 回目テキストフィールドとキーイベント 今日の講義で学ぶ内容 テキストフィールドの利用 キーイベントの処理 テキストフィールドの利用 1 テキストフィールドを配置してみましょう テキストフィールドを用いることにより 数値や文字列などのデータ入力が可能になります ソースファ

解答上の注意 1 解答は 解答 紙の問題番号に対応した解答欄にマークしなさい 2 選択肢は 問ごとに 意されています 問 1の選択肢は 問 2で使 しません 3 選択肢は量が多いため 探しやすさの観点よりグループ分けされています グループ分けに合わせて解答欄が区切られていますが 横 1 列で問題 1

DVIOUT-exer

Microsoft Word - CompA-Ex doc

PowerPoint プレゼンテーション

Prog1_12th

プログラムの基本構成

プログラミング入門1

Assignment_.java 課題 : 転置行列 / class Assignment_ public static void main(string[] args) int i,j; int[][] array = 1,,,,,,,,,,,,,1,1,; 行 列行列 i

JAVA入門

基礎計算機演習 実習課題No6

問題1 以下に示すプログラムは、次の処理をするプログラムである

Transcription:

2017 年 7 月 27 日 ( 木 ) 実施 応用プログラム (3) キー検索 コレクションには, ハッシュテーブルと呼ばれるものがある これは, キー (key) と値 (value) とを組として保持しているものである 通常の配列が添字により各要素にアクセス出来るのに比べて, ハッシュテーブルではキーを用いて各値にアクセスすることが出来る キー及びそのキーから連想される値の組を保持していることから, ハッシュテーブルは連想配列とも呼ばれる ハッシュテーブルの特長は, 指定したキーから対応する値を高速に得られることであり, ここでは, この機能を利用してキー検索を行うプログラムを扱う Java 言語ではハッシュテーブルは,HashMap クラスを用いて実現される HashMap クラスは, Map インタフェースと呼ばれる, キーと値とのマッピング ( 関連付け ) を表すデータ構造のためのインタフェースの, ハッシュテーブルに基づく実装である HashMap クラスには引数無しのコンストラクタが定義されていて, 次の様にマップとしてインスタンスを生成する ( 初期容量を指定するコンストラクタや, 初期容量及び負荷係数を指定するコンストラクタもある ) Map< キーのデータ型, 値のデータ型 > 変数名 = new HashMap< キーのデータ型, 値のデータ型 >(); 例 ) Map<String, Integer> hmi = new HashMap<String, Integer>(); Search クラス Eclipse で jimbo の様に 自分の名前 のパッケージを指定して, 次の Search クラスを作成せ よ ( これは直接実行出来ないクラス 後の例題及び演習に利用する ) import java.util.hashmap; import java.util.map; public class Search { Map<String, Integer> hmi = new HashMap<String, Integer>(); Map<String, String> hms = new HashMap<String, String>(); Search(String[] str1, int[] num){ InitHMi(str1, num); Search(String[] str1, String[] str2) { InitHMs(str1, str2); void InitHMi(String[] istr1, int[] inum) { for (int i=0; i<istr1.length; i++) hmi.put(istr1[i], inum[i]); - 1 -

void InitHMs(String[] istr1, String[] istr2) { for (int i=0; i<istr1.length; i++) hms.put(istr1[i], istr2[i]); void getseti() { for (String str : hmi.keyset()) System.out.println(str + ": " + hmi.get(str)); void getsets() { for (String str : hms.keyset()) System.out.println(str + ": " + hms.get(str)); void geti(string str) { System.out.println(str + ": " + hmi.get(str)); void gets(string str) { System.out.println(str + ": " + hms.get(str)); 解説 1.Search クラスでは, コンストラクタから InitHMi メソッドまたは InitHMs メソッドを呼び出してハッシュテーブル hmi または hms の初期化を行う 2. コンストラクタとしては, 文字列及び整数の配列を引数として受け取るものと,2 つの文字列の配列を引数として受け取ものとの 2 種類が用意されていて, その引数をそれぞれ InitHMi メソッドまたは InitHMs メソッドに受け渡し,HashMap クラスの put メソッドによってハッシュテーブルのマップに関連付けていく 3.put メソッドは, 指定されたキーと指定された値とをマップに関連付ける 4.keySetメソッドは, マップに含まれるキーと値との組を返す 5.for (String str : hmi.keyset()) は, 拡張 forループと呼ばれ,for ( 宣言 : 参照 ) 文の形でコレクションの要素を順に参照することが出来るものである ここで, 宣言 には, 配列の要素の型またはコレクションの要素の型, 及び任意の名前を指定し, 参照 には, 配列名またはコレクションの名前を指定する 6.getメソッドは, 指定されたキーがマップされている値を返し, そのキーのマッピングがこのマップに含まれていない場合は null を返す 例題 1 次のプログラムは, 国名をキーとし, 番号を値とするハッシュテーブルを作成し, キー検索を行うものである これを入力し, ビルドして, 実行せよ ここで, クラス名はSample15_1, ソースファイル名は Sample15_1.java とする - 2 -

public class Sample15_1 { public static void main(string[] args) { // TODO 自動生成されたメソッド スタブ // キー String[] country = {" 日本 ", " 中国 ", " ネパール ", " インド ", " ベトナム "; // 値 int[] no ={100, 50, 95, 90, 80; Search search = new Search(country, no); System.out.println(" ハッシュテーブルの表示 "); search.getseti(); System.out.println(" キー検索の結果 "); search.geti(country[2]); 例題 2 次のプログラムは, 名前の読みをキーとし, 名前を値とするハッシュテーブルを作成し, キー検索を行うものである これを入力し, ビルドして, 実行せよ ここで, クラス名は Sample15_2, ソースファイル名は Sample15_1.java とする import java.util.scanner; public class Sample15_2 { public static void main(string[] args) { // TODO 自動生成されたメソッド スタブ String[] romaji, friend; final int NUM = 5; romaji = new String[NUM]; friend = new String[NUM]; String str1 = null, str2 = null, str3 = null; Scanner sc = new Scanner(System.in); for (int i=0; i<num; i++) { System.out.print((i+1)+" 人目の友人の名前 ( 姓 ) を入力してください :"); str2 = sc.next(); System.out.print(" 名前の読みをローマ字で入力してください :"); - 3 -

str1 = sc.next(); romaji[i] = str1; friend[i] = str2; Search search = new Search(romaji, friend); System.out.println(" ハッシュテーブルの確認 "); search.getsets(); System.out.println(" キー検索 "); System.out.print(" 検索したい名前の読みをローマ字で入力してください :"); str3 = sc.next(); search.gets(str3); 演習次のプログラムリストの空欄を埋めたプログラムを作成し, ビルドして実行せよ ここで, クラス名は Ex15, ソースプログラム名は Ex15.java とする (Eclipse では,workspace の直下の Prog1に, ダウンロードしたproduct.csv を配置してから実行する ) import java.io.bufferedreader; import java.io.filenotfoundexception; import java.io.filereader; import java.io.ioexception; import java.util.scanner; public class Ex15 { public static void main(string[] args) { // TODO 自動生成されたメソッド スタブ String[] code, prod; Scanner 1) = new Scanner(System.in); String 2) = "product.csv"; final int readaheadlimit = 1024*1024; int count = 0; String strc = null; try { BufferedReader br = new BufferedReader(new FileReader(fname)); - 4 -

br.mark(readaheadlimit); String 3) = null; while ((iline = br.readline())!= null) { count++; br.reset(); code = new String[count]; prod = new String[count]; for (int i = 0; (iline = br.readline())!= null; i++) { String[] str =iline.split(","); code[i] = str[0]; prod[i] = str[1]; br.close(); Search search = new Search(code, prod); System.out.println(" ハッシュテーブルの確認 "); search.4) (); System.out.println(" キー検索 "); System.out.print(" 検索したい製品のコードを入力してください :"); strc = sc.next(); search.5) (strc); catch (FileNotFoundException fe) { System.out.println(fname +" というファイルが開けません "); catch (IOException err) { System.out.println("IOExceptionをキャッチ "+err); 解説 1.mark メソッドは, ストリームの現在位置にマークを設定する ここでは, ファイルの先頭位置を記録しておく 2.while 文では, ファイルの行数を数えている 3.resetメソッドは, 直前のマーク位置にストリームをリセットする - 5 -

提出物 : 1) 例題 1 2 及び演習の出力結果をコピーして貼り付けたテキストファイル res15.txt をメールに添付する 2) 演習のソースプログラムのファイル Ex15.javaをメールに添付する 3) 第 14 回の授業の復習の内容を埋めたファイル Review_14th.txt をメールに添付する - 6 -